Giản đồ khoảng không quảng cáo phiên bản 1

Nguồn cấp dữ liệu danh mục thực phẩm dựa trên các thực thể trên schema.org DataFeed. Nguồn cấp dữ liệu danh mục món ăn bao gồm thông tin chi tiết về ngôn ngữ của nhà hàng như địa chỉ nhà hàng, thực đơn và vị trí, cũng như thông tin chi tiết về dịch vụ của nhà hàng như phí giao hàng, khu vực giao hàng và các mục khác như được chỉ định dưới đây.

DataFeed chứa một tập hợp các phần tử, mỗi phần tử đại diện cho một mục duy nhất được thể hiện bằng từ vựng trên schema.org. Bạn có thể sử dụng loại DataFeed để phát hành tất cả dữ liệu có cấu trúc ở định dạng JSON-LD.

Để biết thông tin về cách sử dụng quy cách này để xây dựng nguồn cấp dữ liệu của bạn, hãy xem bài viết Tổng quan về tính năng tích hợp khoảng không quảng cáo.

Định dạng DateTime và Time

DateTime dựa trên loại schema.org. Đồng thời, trừ phi có quy định khác, dữ liệu phải tuân theo định dạng ISO 8601 đồng thời bao gồm ngày, giờ và múi giờ. Sử dụng cú pháp sau cho DateTime:

// DateTime format:
YYYY-MM-DDTHH:MM:SS[∓HH:MM|Z]

Ví dụ:

2017-05-01T06:30:00-07:00 // UTC minus 7 hours
2017-05-01T06:30:00Z  // UTC time zone. The optional "Z" suffix represents the UTC time zone.

Time là giờ địa phương cho múi giờ của một vị trí dịch vụ hoặc nhà hàng nhất định. Giờ đây, cũng dựa trên loại schema.org và cũng phải tuân theo định dạng ISO 8601. Thời gian sử dụng cú pháp sau:

// Time format:
THH:MM:SS

Ví dụ:

T08:08:00 // 8:08 AM

Hãy lưu ý những điều sau mỗi khi bạn chỉ định DateTime hoặc Time:

  • Tiền tố "T" trước thời gian là một phần của định dạng và bắt buộc.
  • Bạn phải chỉ định múi giờ cho DATETIME. Đây không phải là yêu cầu bắt buộc đối với TIME.
  • Bạn phải chỉ định thời gian theo giờ địa phương của nhà hàng hoặc dịch vụ.

Phong bì

Mã khởi đầu cho mọi nguồn cấp dữ liệu danh mục thực phẩm đều phải chứa phần "phong bì".

"Phong bì" là cấu trúc cấp cao nhất của mỗi nguồn cấp dữ liệu và phải là DataFeed với các thuộc tính sau:

Tài sản Loại Sự cần thiết Nội dung mô tả
@context URL Bắt buộc Bối cảnh được sử dụng; thường là "http://schema.googleapis.com".
@type Văn bản Bắt buộc Phương thức này luôn là "DataFeed".
dateModified DateTime Bắt buộc

DateTime được sửa đổi gần đây nhất của nguồn cấp dữ liệu, ở định dạng ISO 8601.

Ngày và giờ ở định dạng ISO_OFFSET_DATE_TIME mà các mục trong nguồn cấp dữ liệu này được sửa đổi. Nếu không có trường này, hệ thống giả định rằng thời gian cập nhật là thời điểm nhận được thông báo đẩy (hoặc quá trình thu thập dữ liệu) tại các máy chủ của Google.

Bạn nên triển khai cách này nếu sử dụng cả tính năng đẩy và thu thập dữ liệu. Bạn phải chỉ định dấu thời gian này với múi giờ và độ chi tiết theo mili giây; ví dụ: "2016-12-28T06:30:00:123-07:00".

Trong nguồn cấp dữ liệu hàng loạt, cách tạo phiên bản thực thể được xác định thông qua trường dateModified trên phong bì của nguồn cấp dữ liệu.

dataFeedElement Mảng Menu, Restaurant hoặc Service Bắt buộc Một hoặc nhiều mặt hàng thuộc nguồn cấp dữ liệu này. Hãy xem mục bên dưới để biết chi tiết.

Ví dụ sau đây cho thấy phong bì:

Ví dụ:

{
  "@context": "http://schema.googleapis.com",
  "dateModified": "2016-12-28T06:30:00:123-07:00",
  "@type": "DataFeed",
  "dataFeedElement": [
    /* All items that are part of this feed go here */
  ]
}

AdditiveDetails

Để sử dụng loại này, hãy thêm ngữ cảnh gs1: "@context": ["http://gs1.org/voc/", "http://schema.org"]

Sau đó, hãy thêm FoodBeverageTobaccoProduct vào loại MenuItem hoặc MenuItemOption thích hợp.

Bảng sau đây mô tả các thuộc tính của loại AdditiveDetails:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc URL này luôn là "AdditiveDetails".
additiveName Văn bản Không bắt buộc Tên của chất phụ gia.
additiveLevelOfContainment Văn bản Không bắt buộc Mã vùng chứa theo gs1:LevelOfcontainsmentCode. Ví dụ: http://gs1.org/voc/LevelOfContainmentCode-CONTAINS, http://gs1.org/voc/LevelOfContainmentCode-FREE_FROM hoặc http://gs1.org/voc/LevelOfContainmentCode-MAY_CONTAIN.

Ví dụ sau đây cho thấy cách sử dụng loại AdditiveDetails:

{
  "@type": ["MenuItem", "FoodBeverageTobaccoProduct"],
  "@id": "http://www.example.com/bar/menuitem/8",
  "name": "Energy Drink",
  "description": "A 0.25l can of energy drink.",
  "offers": {
    "@type": "Offer",
    "sku": "offer-energy-drink",
    "price": "3.49",
    "priceCurrency": "USD"
  },
  "additive": [
    {
      "@type": "AdditiveDetails",
      "additiveName": "caffeine",
      "additiveLevelOfContainment":
        "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS"
    },
    {
      "@type": "AdditiveDetails",
      "additiveName": "phosphate",
      "additiveLevelOfContainment":
        "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS"
    }
  ]
},

AddOnMenuItem

Đồ ăn hoặc đồ uống được liệt kê trong một mục tiện ích bổ sung trên trình đơn của MenuItem.

Bảng sau đây liệt kê các thuộc tính của loại AddOnMenuItem:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Mục này luôn là "AddOnMenuItem".
@id URL Bắt buộc Giá trị nhận dạng duy nhất của mục trên trình đơn tiện ích bổ sung.
name Văn bản Bắt buộc Văn bản xác định AddOnMenuItem khi người dùng đang duyệt qua trình đơn.
description Văn bản Không bắt buộc Nội dung mô tả về mục trên trình đơn tiện ích bổ sung.
image URL Không bắt buộc

Hình ảnh về mục trên trình đơn của tiện ích bổ sung phù hợp với các nguyên tắc sau:

  • Tỷ lệ khung hình 3:2
  • >
  • Độ phân giải tối thiểu: 600 x 400 pixel, 72 dpi
  • >
  • Độ phân giải đề xuất: 1400 x 960 pixel, 72 dpi
offers Mảng Offer Bắt buộc*

Một hoặc nhiều ưu đãi để cung cấp AddOnMenuItem này.

Mô tả thời điểm và mức giá mà AddOnMenuItem này có sẵn. Chỉ một ưu đãi có hiệu lực tại một thời điểm cụ thể. Bạn có thể có nhiều ưu đãi hợp lệ nếu giá hoặc tình trạng còn hàng có thể thay đổi theo thời gian trong ngày. Khi tiện ích bổ sung hoặc mặt hàng khác nhau thông qua một thuộc tính cơ sở hoặc một biến thể của chính mặt hàng bổ sung đó (như khoai tây chiên nhỏ, trung bình và lớn như một tiện ích bổ sung), hãy sử dụng thuộc tính hasMenuItemOption.

Giá trị mặc định cho Offer.eligibleQuantity là tối thiểu là 0 và tối đa là 1.

Các thuộc tính Offer sau được dùng trong AddOnMenuItem:

  • Cần có Offer.sku
  • Cần có Offer.price
  • Cần có Offer.priceCurrency
  • Offer.availabilityStarts không bắt buộc
  • Offer.availabilityEnds không bắt buộc
  • Offer.availableDay không bắt buộc
  • Offer.validFrom không bắt buộc
  • Offer.validThrough không bắt buộc
  • Offer.eligibleQuantity không bắt buộc
  • Offer.inventoryLevel không bắt buộc
hasMenuItemOptions Mảng MenuItemOption Bắt buộc*

Mảng các thuộc tính cơ sở mô tả một biến thể của chính món ăn bổ sung (như khoai tây chiên nhỏ, vừa và lớn dưới dạng tiện ích bổ sung) cho món trong trình đơn tiện ích bổ sung này. Sử dụng các lựa chọn để chỉ định các biến thể hiện có cho mục trên trình đơn tiện ích bổ sung này. Có hai trường hợp điều này có thể xảy ra:

  • Biến thể cơ bản là dựa trên chính món ăn bổ sung đó (ví dụ: khoai tây chiên loại nhỏ, trung bình và lớn)
  • Biến thể cơ bản của món trong thực đơn có liên kết với tiện ích bổ sung này (chẳng hạn như thêm phô mai cho một chiếc bánh pizza lớn)
suitableForDiet Mảng RestrictedDiet Không bắt buộc Món ăn tuân thủ quy định hạn chế về chế độ ăn đã mô tả (chẳng hạn như "GlutenFreeDiet" hoặc "VeganDiet"). Đây là danh sách liệt kê các giá trị có thể có.
nutrition NutritionInformation Không bắt buộc Thông tin dinh dưỡng của món ăn, đáng chú ý nhất là lượng calo.
menuAddOn Mảng AddOnMenuSection Không bắt buộc AddOnMenuItem có thể có một mục trình đơn bao gồm các mục được phép mà bạn có thể thêm dưới dạng tiện ích bổ sung.

Ví dụ sau đây cho thấy AddOnMenuItem:

Ví dụ 1

{
  "@type": "AddOnMenuSection",
  "@id": "https://www.example.com/1089/addon/1",
  "name": "AddOnCheese",
  "hasMenuItem": [
    {
      "@type": "AddOnMenuItem",
      "@id": "https://www.example.com/1089/addon/a",
      "name": "Swiss",
      "offers": {
        "@type": "Offer",
        "sku": "offer-swiss",
        "price": "2.99",
        "priceCurrency": "USD"
      }
    },
    {
      "@type": "AddOnMenuItem",
      "@id": "https://www.example.com/1089/addon/b",
      "name": "Mozarella",
      "offers": {
        "@type": "Offer",
        "sku": "offer-mozzarella",
        "price": "1.99",
        "priceCurrency": "USD"
      }
    }
  ]
}

Ví dụ 2

{
  "@type": "MenuItem",
  "@id": "https://www.example.com/1089/product/170067",
  "name": "Pepperoni Pizza",
  "hasMenuItemOptions": [
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "SIZE",
        "value": "Small"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-small-pepperoni-pizza",
        "price": "10.00",
        "priceCurrency": "USD"
      }
    },
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "SIZE",
        "value": "Large"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-large-pepperoni-pizza",
        "price": "20.00",
        "priceCurrency": "USD"
      }
    }
  ],
  "menuAddOn": [
    {
      "@type": "AddOnMenuSection",
      "name": "Choice of toppings",
      "@id": "https://www.example.com/1089/addon/1",
      "hasMenuItem": [
        {
          "@type": "AddOnMenuItem",
          "@id": "https://www.example.com/1089/addon/1/a",
          "name": "Shrimp",
          "hasMenuItemOptions": [
            {
              "@type": "MenuItemOption",
              "value": [
                {
                  "@type": "PropertyValue",
                  "name": "PIZZA_SIDE",
                  "value": "PIZZA_SIDE_LEFT" // Values are predefined for pizza side.
                },
                {
                  "@type": "PropertyValue",
                  "name": "APPLICABLE_ITEM_OPTION",
                  "value": "Small" // Value should be same as mentioned in item's options.
                }
              ],
              "offers": {
                "@type": "Offer",
                "sku": "offer-topping-shrimp-left-small",
                "price": "1.00",
                "priceCurrency": "USD"
              }
            },
            {
              "@type": "MenuItemOption",
              "value": [
                {
                  "@type": "PropertyValue",
                  "name": "PIZZA_SIDE",
                  "value": "PIZZA_SIDE_LEFT" // Values are predefined for pizza side.
                },
                {
                  "@type": "PropertyValue",
                  "name": "APPLICABLE_ITEM_OPTION",
                  "value": "Large" // Value should be same as mentioned in item's options.
                }
              ],

              "offers": {
                "@type": "Offer",
                "sku": "offer-topping-shrimp-left-large",
                "price": "2.00",
                "priceCurrency": "USD"
              }
            },
            {
              "@type": "MenuItemOption",
              "value": [
                {
                  "@type": "PropertyValue",
                  "name": "PIZZA_SIDE",
                  "value": "PIZZA_SIDE_WHOLE" // Values are predefined for pizza side.
                },
                {
                  "@type": "PropertyValue",
                  "name": "APPLICABLE_ITEM_OPTION",
                  "value": "Small" // Value should be same as mentioned in item's options.
                }
              ],

              "offers": {
                "@type": "Offer",
                "sku": "offer-topping-shrimp-whole-small",
                "price": "1.50",
                "priceCurrency": "USD"
              }
            },
            {
              "@type": "MenuItemOption",
              "value": [
                {
                  "@type": "PropertyValue",
                  "name": "PIZZA_SIDE",
                  "value": "PIZZA_SIDE_WHOLE" // Values are predefined for pizza side.
                },
                {
                  "@type": "PropertyValue",
                  "name": "APPLICABLE_ITEM_OPTION",
                  "value": "Large" // Value should be same as mentioned in item's options.
                }
              ],

              "offers": {
                "@type": "Offer",
                "sku": "offer-topping-shrimp-whole-large",
                "price": "2.50",
                "priceCurrency": "USD"
              }
            }
          ]
        }
      ]
    }
  ]
}

AddOnMenuSection

Một nhóm nhỏ các mặt hàng thực phẩm hoặc đồ uống dưới dạng phần thực đơn bổ sung cho mục trong trình đơn.

Bảng sau đây liệt kê các thuộc tính của loại AddOnMenuSection:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Mục này luôn là "AddOnMenuSection".
@id URL Bắt buộc Mã nhận dạng duy nhất của mục trong thực đơn.
name Văn bản Bắt buộc Văn bản có thể xác định AddOnMenuSection khi người dùng đang duyệt qua trình đơn.
description Văn bản Không bắt buộc Nội dung mô tả phần thực đơn.
eligibleQuantity QuantitativeValue Không bắt buộc Cho biết số lượng mục được phép làm tiện ích bổ sung cho mục trình đơn này. Bạn có thể sử dụng trường này để hạn chế số lượng tiện ích bổ sung, chẳng hạn như số lượng món ăn kèm tối thiểu và tối đa mà bạn có thể chọn cho bánh pizza.
image URL Không bắt buộc Hình ảnh mục trong thực đơn.
hasMenuItem Mảng AddOnMenuItem Bắt buộc* Mục trên trình đơn tiện ích bổ sung có trong AddOnMenuSection.
offers Mảng Offer Không bắt buộc

Sử dụng Offer.availabilityStartsOffer.availabilityEnds để cho biết khoảng thời gian AddOnMenuSection này có sẵn.

Danh sách bên dưới cho biết thuộc tính Offer nào được sử dụng trong AddOnMenuSection.

  • Offer.availabilityStarts không bắt buộc
  • Offer.availabilityEnds không bắt buộc
  • Offer.availableDay không bắt buộc
  • Offer.validFrom không bắt buộc
  • Offer.validThrough không bắt buộc
hasMenuSection Mảng AddOnMenuSection Bắt buộc* Phân nhóm logic theo thực đơn bổ sung (như Bữa tối, Món khai vị hoặc Món cá).
defaultOption Mảng AddOnMenuItem Không bắt buộc

Các mục trên trình đơn tiện ích bổ sung được chọn sẵn theo mặc định cho người dùng trong AddOnMenuSection. Người dùng có thể thay đổi lựa chọn cuối cùng. Nếu không chỉ định defaultOption, thì sẽ không có AddOnMenuItem nào được chọn sẵn.

Các đối tượng AddOnMenuItem phải tồn tại trong hasMenuItem của AddOnMenuSection.

Số lượng defaultOption không được vượt quá eligibleQuantity tối đa của AddOnMenuSection.

numberOfFreeAddOns Số Không bắt buộc Cho biết số lượng tiện ích bổ sung mà người dùng có thể chọn mà không tốn phí.

Các ví dụ sau đây bao gồm các đối tượng AddOnMenuSection:

Ví dụ 1

{
  "@type": "AddOnMenuSection",
  "@id": "https://www.example.com/1089/addon/1",
  "name": "AddOnCheese",
  "hasMenuItem": [
    {
      "@type": "AddOnMenuItem",
      "@id": "https://www.example.com/1089/addon/a",
      "name": "Swiss",
      "offers": {
        "@type": "Offer",
        "sku": "offer-swiss",
        "price": "2.99",
        "priceCurrency": "USD"
      }
    },
    {
      "@type": "AddOnMenuItem",
      "@id": "https://www.example.com/1089/addon/b",
      "name": "Mozarella",
      "offers": {
        "@type": "Offer",
        "sku": "offer-mozzarella",
        "price": "1.99",
        "priceCurrency": "USD"
      }
    }
  ]
}

Ví dụ 2

"menuAddOn": {
  "@type": "AddOnMenuSection",
  "name": "Cheese",
  "@id": "https://www.example.com/1089/addon/1", // Points to an AddOnMenuSection
  "eligibleQuantity":
    "@type": "QuantitativeValue",
    "minValue": 0,
    "maxValue": 2 // Maximum of 2 cheeses are allowed
  }
}

Ví dụ 3

Mục trong trình đơn "Cheese Sandwich" có một mục "Lựa chọn phô mai" AddOnMenuSection với "Thuỵ Sĩ" và "Mozzarella" được chọn sẵn theo mặc định.

{
  "@type": "AddOnMenuSection",
  "@id": "https://www.example.com/1089/addon/1",
  "name": "AddOnCheese",
  "defaultOption": [
    {
      "@type": "AddOnMenuItem",
      "@id": "https://www.example.com/1089/addon/a"
    },
    {
      "@type": "AddOnMenuItem",
      "@id": "https://www.example.com/1089/addon/b"
    }
  ],
  "hasMenuItem": [
    {
      "@type": "AddOnMenuItem",
      "@id": "https://www.example.com/1089/addon/a",
      "name": "Swiss",
      "offers": {
        "@type": "Offer",
        "sku": "offer-swiss",
        "price": "2.99",
        "priceCurrency": "USD"
      }
    },
    {
      "@type": "AddOnMenuItem",
      "@id": "https://www.example.com/1089/addon/b",
      "name": "Mozzarella",
      "offers": {
        "@type": "Offer",
        "sku": "offer-mozzarella",
        "price": "1.99",
        "priceCurrency": "USD"
      }
    }
  ]
}

AdvanceServiceDeliveryHoursSpecification

Biểu thị giờ thực hiện đơn hàng để người dùng lên lịch đơn đặt hàng trước để giao hàng và lấy hàng mang đi.

Thông thường, giá trị của opens nhỏ hơn giá trị của closes. Các nguyên tắc sau đây áp dụng cho việc sử dụng các thuộc tính openscloses:

  • Bạn không bắt buộc phải sử dụng thuộc tính openscloses cho AdvanceServiceDeliveryHoursSpecification, nhưng bạn nên thêm các thuộc tính đó.
  • Thời gian phải được chỉ định theo giờ địa phương cho dịch vụ. Không đưa múi giờ vào giá trị opens hoặc closes. Múi giờ đã chỉ định sẽ bị bỏ qua.
  • Nếu openscloses không được chỉ định rõ ràng, chúng tôi sẽ giả định rằng tính năng đặt hàng trước có sẵn vào mọi ngày.
  • Nếu openscloses giống nhau, thì chúng tôi sẽ giả định rằng không thể sử dụng tính năng sắp xếp trước.
  • Nếu opens lớn hơn closes, thì giờ đóng cửa sẽ được diễn giải là vào ngày tiếp theo. Ví dụ: nếu giờ mở cửa được đặt thành 5 giờ chiều ngày 1 tháng 1 và giờ đóng cửa là 2 giờ sáng, thì nhà hàng sẽ được hiểu là đóng cửa lúc 2 giờ sáng ngày 2 tháng 1.
  • openscloses là khung giờ trong tương lai. closes là dành riêng. Ví dụ: nếu opens là 10 giờ sáng và closes là 4 giờ chiều với serviceTimeInterval là 15 phút, thì khung giờ đầu tiên sẽ bắt đầu lúc 10 giờ sáng và khung giờ cuối cùng sẽ bắt đầu lúc 3:45 chiều.

Bảng sau đây mô tả các thuộc tính của loại AdvanceServiceDeliveryHoursSpecification:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Giá trị này luôn là "AdvanceServiceServiceHoursSpecification".
validFrom DateTime Câu lệnh có điều kiện

Ngày bắt đầu mà từ đó đơn đặt hàng trước của người dùng có thể được thực hiện. Ví dụ: "2017-05-01T00:00:00-07:00".

Nếu bạn không đặt thuộc tính này, thuộc tính này được giả định là hợp lệ mỗi ngày. Thuộc tính validFromvalidThrough phải không có hoặc xuất hiện cùng nhau.

Nếu loại này được chỉ định làm specialOpeningHoursSpecification ở cấp Service, thì bạn bắt buộc phải chỉ định thuộc tính validFrom này trong AdvanceServiceDeliveryHoursSpecification.

Để biết thêm thông tin, hãy xem nội dung Định dạng ngày giờ và thời gian.

validThrough DateTime Không bắt buộc

Ngày kết thúc mà sau đó đơn đặt hàng trước của người dùng sẽ không thực hiện được nữa. Ví dụ: "2018-12-01T00:00:00-07:00".

Nếu bạn không đặt thuộc tính này, thuộc tính này được giả định là hợp lệ mỗi ngày. Thuộc tính validFromvalidThrough phải không có hoặc xuất hiện cùng nhau.

Nếu loại này được chỉ định làm specialOpeningHoursSpecification ở cấp Service, thì bạn bắt buộc phải chỉ định thuộc tính validThrough trong AdvanceServiceDeliveryHoursSpecification.

Đây chỉ là thời gian dành riêng cho validThrough. Ví dụ: nếu bạn đặt thời gian đó là 6 giờ chiều, thì thời gian sẽ hợp lệ cho đến 5:59:59 chiều.

Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.

opens Time Không bắt buộc

Áp dụng cho khung giờ giao hàng hoặc mang đi.

Thời gian cụ thể trong ngày bắt đầu từ thời điểm người dùng có thể thực hiện đơn đặt hàng trước của họ. Ví dụ: 6:30 SA được cung cấp là "T06:30:00".

Thời gian phải được chỉ định theo giờ địa phương cho dịch vụ. Không đưa múi giờ vào giá trị opens. Nếu bạn chỉ định múi giờ, Google sẽ bỏ qua thông tin này.

Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.

closes Time Không bắt buộc

Áp dụng cho khung giờ giao hàng hoặc mang đi.

Thời gian cụ thể trong ngày mà vượt quá thời gian thực hiện đơn đặt hàng trước của người dùng. Ví dụ: 9:00 PM được cung cấp là "T21:00:00". closes> là độc quyền, vì vậy, việc đặt giá trị này thành 9:00 tối trong serviceTimeInterval của 15 phút có nghĩa là khung giờ còn trống cuối cùng sẽ bắt đầu lúc 8:45 tối.

Thời gian phải được chỉ định theo giờ địa phương cho dịch vụ. Không đưa múi giờ vào giá trị closes. Nếu bạn chỉ định múi giờ, Google sẽ bỏ qua thông tin này.

Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.

dayOfWeek Mảng DayOfWeek Không bắt buộc

Những ngày trong tuần có giờ giao hàng trước. Các giá trị hợp lệ là:

  • "Thứ Hai"
  • "Thứ Ba"
  • "Thứ Tư"
  • "Thứ Năm"
  • "Thứ Sáu"
  • "Thứ Bảy"
  • "Chủ nhật"

Nếu bạn không chỉ định ngày nào trong tuần, thì AdvanceServiceDeliveryHoursSpecification sẽ áp dụng cho tất cả các ngày.

serviceTimeInterval Duration Bắt buộc

Khoảng thời gian giữa hai lần dịch vụ liên tiếp.

Ví dụ: Nếu openscloses là 8 giờ sáng và 8 giờ tối và serviceTimeInterval là 15 phút, thì người dùng có thể chọn thời gian thực hiện là 8 giờ sáng, 8:15 sáng, 8:30 sáng, 8:45 sáng, v.v. cho đến 8 giờ tối.

Bạn phải chỉ định Duration làm thời lượng ISO 8601. Ví dụ: "P15M" có nghĩa là các khoảng thời gian 15 phút.

advanceBookingRequirement QuantitativeValue Bắt buộc

Số phút tính từ thời điểm đặt hàng cho đến khi có thể thực hiện đơn đặt hàng trước.

Các giá trị minmax của QuantitativeValue phải được đặt thành số phút và unitCode thành "MIN".

Ví dụ: nếu đơn đặt hàng trước cần ít nhất 60 phút để được thực hiện và bị hạn chế thực hiện sau hơn 2 ngày, thì giá trị min là 60 và giá trị max là 2880.

Ví dụ sau đây cho thấy cách sử dụng loại AdvanceServiceDeliveryHoursSpecification:

Ví dụ 1

{
  "@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"
  }
}

AllergenDetails

Để sử dụng loại này, hãy thêm ngữ cảnh gs1: "@context": ["http://gs1.org/voc/", "http://schema.org"]

Sau đó, hãy thêm FoodBeverageTobaccoProduct vào loại MenuItem hoặc MenuItemOption thích hợp.

Bảng sau đây mô tả các thuộc tính của loại AllergenDetails:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Giá trị này luôn là "AllergenDetails".
allergenType Văn bản Không bắt buộc Loại chất gây dị ứng theo gs1:AllergenTypeCode . Ví dụ: http://gs1.org/voc/AllergenTypeCode-PEANUTS.
allergenLevelOfContainmentCode Văn bản Không bắt buộc Mã vùng chứa theo gs1:LevelOfcontainsmentCode. Ví dụ: http://gs1.org/voc/LevelOfContainmentCode-CONTAINS, http://gs1.org/voc/LevelOfContainmentCode-FREE_FROM hoặc http://gs1.org/voc/LevelOfContainmentCode-MAY_CONTAIN.

Ví dụ sau đây cho thấy cách sử dụng loại AllergenDetails:

{
  "@type": ["MenuItem", "FoodBeverageTobaccoProduct"],
  "@id": "http://www.example.com/bar/menuitem/6",
  "name": "Strawberry joghurt drink",
  "description": "A 0.5l bottle of strawberry joghurt drink.",
  "offers": {
    "@type": "Offer",
    "sku": "offer-joghurt-drink",
    "price": "2.49",
    "priceCurrency": "USD"
  },
  "hasAllergen": [
    {
      "@type": "AllergenDetails",
      "allergenType": "http://gs1.org/voc/AllergenTypeCode-GLUTEN",
      "allergenLevelOfContainmentCode":
        "http://gs1.org/voc/LevelOfContainmentCode-FREE_FROM"
    },
    {
      "@type": "AllergenDetails",
      "allergenType": "http://gs1.org/voc/AllergenTypeCode-LACTOSE",
      "allergenLevelOfContainmentCode":
        "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS"
    }
  ]
},

DeliveryChargeSpecification

Bảng sau đây mô tả các thuộc tính của loại DeliveryChargeSpecification:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Giá trị này luôn là "deliveryChargeSpecification".
@id URL Không bắt buộc Giá trị nhận dạng cho quy cách phí giao hàng.
price Số Bắt buộc Tổng chi phí giao hàng dưới dạng giá trị số. Hãy sử dụng thuộc tính priceCurrency để biểu thị loại đơn vị tiền tệ thay vì ký hiệu tiền tệ. Ví dụ: "6.00" không có ký hiệu tiền tệ.
priceCurrency Văn bản Bắt buộc Mã tiền tệ ISO 4217 gồm 3 chữ cái. Ví dụ: "USD".
eligibleTransactionVolume PriceSpecification Không bắt buộc Số lượng giao dịch (bằng đơn vị tiền tệ) mà quy cách phí giao hàng này hợp lệ. Ví dụ: để cho biết số lượng đơn đặt hàng tối thiểu hoặc để thể hiện rằng dịch vụ vận chuyển không tính thêm phí trên một số lượng đơn đặt hàng nhất định.
eligibleQuantity QuantitativeValue Không bắt buộc Khoảng thời gian và đơn vị đo lường số lượng đặt hàng mà phí giao hàng hợp lệ. Ví dụ: điều này cho phép bạn chỉ định rằng một mức phí vận chuyển nhất định chỉ hợp lệ đối với một số lượng nhất định.
eligibleRegion Mảng GeoShape, Place hoặc GeoCircle Không bắt buộc Địa điểm hoặc GeoShape/GeoCircle cho(các) khu vực địa chính trị mà ưu đãi hoặc quy cách phí giao hàng hợp lệ. Chỉ sử dụng thuộc tính này nếu phí giao hàng thay đổi theo khu vực.
validFrom DateTime Không bắt buộc Ngày và giờ (bao gồm cả múi giờ) khi phí giao hàng đã chỉ định có hiệu lực. Ví dụ: "2017-05-01T06:30:00-07:00". Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.
validThrough DateTime Không bắt buộc Ngày và giờ (bao gồm cả múi giờ) mà sau đó phí giao hàng được chỉ định là không hợp lệ. Ví dụ: "2017-05-01T06:30:00-07:00". Thời gian cho validThrough là không dành riêng, ví dụ: nếu bạn đặt thời gian là 6 giờ chiều thì thời gian sẽ hợp lệ cho tới 5:59:59 chiều. Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.

Các ví dụ sau đây minh hoạ các phần tử DeliveryChargeSpecification:

Ví dụ 1

"offers": {
  "@type":"Offer",
  "priceSpecification":[
    {
      "@type": "DeliveryChargeSpecification",
      "price": "5.0",
      "priceCurrency": "USD"
    }
  ]
}

Ví dụ 2

"priceSpecification": [
  {
    "@type": "DeliveryChargeSpecification",
    "@id": "http://www.provider.com/defaultdeliveryfee/foo",
    "price": "10.0",
    "priceCurrency": "USD",
    "eligibleQuantity": {
      "@type": "QuantitativeValue",
      "minValue": 3  // Minimum of 3 items required for delivery
    }
  },
  {
    "@type": "DeliveryChargeSpecification",
    "@id": "http://www.provider.com/deliveryfee/foo/1",
    "price": "20.0",
    "priceCurrency": "USD",
    "validFrom":"T18:00:00", // Valid from 6:00PM
    "validThrough":"T22:00:00", // Valid to 9:59:59PM
    "eligibleQuantity": {
      "@type": "QuantitativeValue",
      "minValue": 3  // Minimum of 3 items required for delivery
    }
  }
]

Ví dụ 3

"priceSpecification": [{
    "@type": "DeliveryChargeSpecification",
    "@id": "http://www.provider.com/threebrotherstacos/deliveryfee/1",
    "price": "8.00", // Charges $8 for area5
    "priceCurrency": "USD",
    "eligibleTransactionVolume": {
      "@type": "PriceSpecification",
      "minPrice": "20.00",
      "priceCurrency": "USD"
    },
    "eligibleRegion": [ // area5
      {
        "@type": "GeoCircle",
        "geoMidpoint": {
          "@type": "GeoCoordinates",
          "latitude": "37.7392607",
          "longitude": "-122.3895522"
        },
        "geoRadius": "4505"
      }
    ]
  },
  {
    "@type": "DeliveryChargeSpecification",
    "@id": "http://www.provider.com/threebrotherstacos/defaultdeliveryfee",
    "price": "6.00", // Charges $6 when delivered from Foo restaurant to area1, area2, area3 and area4 (Default charge)
    "priceCurrency": "USD",
    "eligibleTransactionVolume": {
      "@type": "PriceSpecification",
      "minPrice": "20.00", // Minimum order price for delivery is $20
      "priceCurrency": "USD"
    }
  }
]

Ngoài "@type": ["DeliveryChargeSpecification"], bạn có thể mở rộng đối tượng bằng UnitPriceSpecification:

"@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"]

Tiện ích này cung cấp thêm 2 thuộc tính bắt buộc đối với phí giao hàng được tính theo tỷ lệ phần trăm.

Tài sản Loại Sự cần thiết Nội dung mô tả
referenceQuantity QuantitativeValue Bắt buộc Số lượng tham chiếu khi áp dụng một mức giá nhất định. Ví dụ: referenceQuantity của giá trị 10 tương ứng với unitCode là "P1" sẽ mang lại 10% giá trị đơn đặt hàng. Hiện tại, chỉ unitCode "P1" được hỗ trợ.
basePrice Số Không bắt buộc Phí cơ bản ngoài referenceQuantity. Ví dụ: referenceQuantity/10 có unitCode là "P1" và basePrice là 5 bằng USD sẽ mang lại 5 USD + 10% giá trị đơn đặt hàng. Giá trị mặc định là "0".

Ví dụ về phí giao hàng

Google cho phép bạn chỉ định trước nhiều loại phí cho người dùng bằng cách sử dụng Offer.PriceSpecification của thực thể Dịch vụ.

Xin lưu ý rằng tính năng Đặt hàng hai đầu hiện chỉ hỗ trợ một DeliveryChargeSpecification. Kết hợp tất cả các loại phí vào một DeliveryChargeSpecification duy nhất.

Hãy tham khảo Ví dụ về nguồn cấp dữ liệu dịch vụ để biết cách chỉ định phí giao hàng dựa trên diện tích, khoảng cách và giá trị đơn đặt hàng.

Nếu không có phí, Offer.PriceSpecification sẽ bị bỏ qua.

  • Ví dụ 1: Phí giao hàng là 5% tổng phụ của giỏ hàng
  • Ví dụ 2: Phí giao hàng là 50.000 VND
  • Ví dụ 3: Phí giao hàng là 5 $+ 10% tổng phụ của giỏ hàng
  • Ví dụ 4: Phí giao hàng là 50.000 VND và phí hành lý là 0,1$
  • Ví dụ 5: Phí giao hàng là 5% và phí tiện lợi là 2% của tổng phụ của giỏ hàng
  • Ví dụ 6: Phí giao hàng là 5 $và 1 $cho mỗi khoảng cách thêm 1km

Ví dụ 1

priceSpecification [
  {
    "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "5.00", // 5%
      "unitCode": "P1" // P1 == %
    },
    "priceCurrency": "USD"
  }
]

Ví dụ 2

priceSpecification [
  {
    "@type": ["DeliveryChargeSpecification"],
    "priceCurrency": "USD",
    "price": "5.00"
  }
]

Ví dụ 3

priceSpecification [
  {
    "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "10.00", // 10%
      "unitCode": "P1", // P1 == %
    },
    "priceCurrency": "USD",
    "basePrice": "5.00" // User always pays $5 in addition to 10%
  }
]

Ví dụ 4

priceSpecification [
  {
    "@type": ["DeliveryChargeSpecification"],
    "priceCurrency": "USD",
    "price": "5.10" //$5 + $0.1
  }

Ví dụ 5:

priceSpecification [
  {
    "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "7.00", // 5% + 2%
      "unitCode": "P1" // P1 == %
    },
    "priceCurrency": "USD"
  },
]

Ví dụ 6

priceSpecification [
  {
    "@type": ["DeliveryChargeSpecification", "UnitPriceSpecification"],
    "basePrice": 5.00, // User always pays $5
    "price": 1.00, // An additional $1.00 is added per 1km
    "priceCurrency": "USD",
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "unitCode": "MTR", // MTR == meter
      "value": "1000.0" // 1km
    }
  }
]

GeoCircle

Bảng sau đây mô tả các thuộc tính của loại GeoCircle:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Tên này luôn là "GeoCircle".
geoMidpoint GeoCoordinates Bắt buộc Cho biết GeoCoordinates ở giữa GeoCircle.
geoRadius Số Bắt buộc Cho biết bán kính gần đúng (tính bằng mét) của GeoCircle.

Ví dụ sau đây cho thấy một phần tử GeoCircle:

Ví dụ:

{
  "@type": "GeoCircle",
  "geoMidpoint": {
    "@type": "GeoCoordinates",
    "latitude": "37.7392607",
    "longitude": "-122.3895522"
  },
  "geoRadius": "4505"
}

GeoCoordinates

Bảng sau đây mô tả các thuộc tính của loại GeoCoordinates:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Giá trị này luôn là "Geocoordinates".
latitude Số Bắt buộc

Vĩ độ tính theo độ. Các giá trị được giới hạn trong phạm vi từ -90 đến 90. Nếu giá trị được chỉ định nhỏ hơn -90 thì giá trị này sẽ được đặt thành -90; nếu giá trị lớn hơn 90 thì sẽ được đặt thành 90.

Giá trị này phải có ít nhất 5 chữ số thập phân.

longitude Số Bắt buộc

Kinh độ tính theo độ. Các giá trị nằm ngoài phạm vi từ -180 đến 180 sẽ được gói để nằm trong phạm vi đó. Ví dụ: giá trị -190 sẽ được chuyển đổi thành 170. Giá trị 190 được chuyển đổi thành -170. Điều này phản ánh thực tế là kinh độ bao quanh hình ảnh địa cầu.

Giá trị này phải có ít nhất 5 chữ số thập phân.

Ví dụ sau đây cho thấy một phần tử GeoCoordinates:

Ví dụ:

"geo": {
  "@type": "GeoCoordinates",
  "latitude": "35.7392607",
  "longitude": "-120.3895522"
}

GeoShape

Bảng sau đây mô tả các thuộc tính của loại GeoShape:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Giá trị này luôn là "GeoShape".
polygon Mảng văn bản Bắt buộc

Một đa giác hoặc nhiều đa giác được biểu thị dưới dạng một chuỗi gồm ba điểm trở lên và được phân tách bằng khoảng trắng. Điểm đầu tiên và điểm cuối cùng nên giống nhau, nhưng điều này là không bắt buộc.

Mỗi điểm trong một đa giác hoặc nhiều đa giác được xác định bằng một điểm vĩ độ, theo sau là một điểm kinh độ. Bạn cũng phải chỉ định các điểm theo chiều ngược kim đồng hồ.

Trong hầu hết các trường hợp, bạn sẽ có một đa giác duy nhất. Đối với các trường hợp sử dụng phức tạp hơn, hãy xem tài liệu về khu vực kinh doanh phân phối.

Các ví dụ sau đây minh hoạ các phần tử GeoShape:

Ví dụ 1

{
  "@type": "GeoShape", // area4
  // Specify latitude first (i.e., lat long lat long ...)
  "polygon": "37.806000 -122.425592 37.775849 -122.419043 37.795547 -122.394046 37.808747 -122.412619"
},

Ví dụ 2

{
  "@type": "GeoShape", // A service area with a hole.
  // Specify latitude first (i.e., lat long lat long ...)
  "polygon": [ “37.771535 -122.506881 37.764289 -122.506669 37.766497 -122.453058”,
               “37.791707 -122.447987 37.746676 -122.449433 37.736150 -122.505944 37.780924 -122.509729”]
},

Ví dụ 3

{
  "@type": "Service",
  "@id": "http://www.provider.com/service/1",
  "areaServed": [
    {
      "@type": "GeoShape",  // Richmond District delivery area.
      // Specify latitude first (i.e., lat long lat long ...)
      "polygon": "37.785847 -122.484851 37.772757 -122.483983 37.774442 -122.458563 37.786876 -122.459474"
    },
    {
      "@type": "GeoShape",  // Haight-Ashbury delivery area.
      // Specify latitude first (i.e., lat long lat long ...)
      "polygon": "37.774804 -122.454774 37.766224 -122.452881 37.769087 -122.436043 37.773087 -122.437417"
    }  ],
...
},

Bảng sau đây liệt kê các thuộc tính của loại Menu:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Mục này luôn là "Trình đơn".
@id URL Bắt buộc Mã nhận dạng duy nhất của thực đơn.
name Văn bản Không bắt buộc Văn bản có thể xác định Menu khi người dùng đang duyệt qua trình đơn.
description Văn bản Không bắt buộc Nội dung mô tả thực đơn.
disclaimer MenuDisclaimer Không bắt buộc Tuyên bố từ chối trách nhiệm đối với thực đơn. Ví dụ: công bố thông tin về dinh dưỡng và công bố về chất gây dị ứng.
hasMenuSection Một đối tượng hoặc mảng MenuSection Không bắt buộc Phân nhóm logic theo thực đơn (như Bữa tối, Món khai vị hoặc Món cá).
hasMenuItem Một đối tượng hoặc mảng MenuItem Không bắt buộc Các đối tượng MenuItem chứa trong Menu, thường là khi Menu không được chia nhỏ theo MenuSections.
inLanguage Văn bản Không bắt buộc Ngôn ngữ của nội dung trình đơn, dưới dạng mã ngôn ngữ theo tiêu chuẩn IEEETF BCP 47. Ví dụ: "vi-VN".

Các ví dụ sau đây minh hoạ cách sử dụng loại Menu:

Ví dụ 1

{
  "@type": "Menu",
  "@id": "http://www.provider.com/somerestaurant/menu/1",
  "hasMenuSection": {
    "@type": "MenuSection",
    "@id": "http://www.provider.com/somerestaurant/menusection/1",
    "name": "Tacos",
    "description": "Tacos inspired by India cuisine.",
    "offers": {
      "@type": "Offer",
      "availabilityStarts": "T08:00:00", // Starts at 8:00AM
      "availabilityEnds": "T22:00:00" // Ends at 10:00PM. Available 8AM-9:59:59PM
    },
    "hasMenuItem": {
      "@type": "MenuItem",
      "@id": "http://www.provider.com/somerestaurant/menuitem/1",
      "name": "Aloo Gobi Taco",
      "description": "Mexico City-style street corn tortilla taco filled with a flavorful mixture of mildly south Indian spiced cauliflower, potato, tomato, onions and bell peppers.",
      "offers": {
        "@type": "Offer",
        "sku": "offer-aloo-gobi-taco",
        "price": "3.50",
        "priceCurrency": "USD"
      },
      "nutrition": {
        "@type": "NutritionInformation",
        "calories": "170 Cal",
        "fatContent": "3 g",
        "fiberContent": "2 g",
        "proteinContent": "4 g"
      },
      "suitableForDiet": "http://schema.org/GlutenFreeDiet"
    }
  },
  "inLanguage": "English"
}

Ví dụ 2

Ví dụ này cho thấy hasMenuItem dưới dạng một mảng.

{
  "@type": "Menu",
  "@id": "http://www.provider.com/somerestaurant/menu/1",
  "name": "Dine-In Menu",
  "description": "Menu for in-restaurant dining only.",
  "hasMenuSection": [
    {
      "@type": "MenuSection",
      "@id": "http://www.provider.com/somerestaurant/menusection/1",
      "name": "Main",
      "description": "Main course",
      "image": "http://www.provider.com/somerestaurant/main_dishes.jpg",
      "hasMenuItem": [
        {
          "@type": "MenuItem",
          "@id": "http://www.provider.com/somerestaurant/menuitem/1",
          "name": "Pizza",
          "description": "Pizza",
          "offers": {
            "@type": "Offer",
            "sku": "offer-pizza",
            "price": "7.49",
            "priceCurrency": "USD",
            "availabilityStarts": "T08:00:00", // Starts at 8:00AM
            "availabilityEnds": "T18:00:00" // Ends at 6:00PM, last order at 5:59:59PM
          }
        },
        {
          "@type": "MenuItem",
          "@id": "http://www.provider.com/somerestaurant/menuitem/2",
          "name": "Pasta",
          "description": "Pasta",
          "offers": [
            {
              "@type": "Offer",
              "sku": "offer-pasta-lunch",
              "price": "7.49",
              "priceCurrency": "USD",
              "availabilityStarts": "T08:00:00", // Starts at 8:00AM
              "availabilityEnds": "T18:00:00" // Ends at 6:00PM, last order at 5:59:59PM
            },
            {
              "@type": "Offer",
              "sku": "offer-pasta-dinner",
              "price": "10.49",
              "priceCurrency": "USD",
              "availabilityStarts": "T18:00:00", // Starts at 6:00PM
              "availabilityEnds": "T21:00:00" // Ends at 9:00PM, last order at 8:59:59PM
            }
          ]
        }
      ]
    },
    {
      "@type": "MenuSection",
      "@id": "http://www.provider.com/somerestaurant/menusection/2",
      "name": "Soups & Salads",
      "description": "Salads and a few choices of soup",
      "image": "https://www.provider.com/somerestaurant/soup_and_salad_dishes.jpg",
      "hasMenuItem": {
        "@type": "MenuItem",
        "@id": "http://www.provider.com/somerestaurant/menuitem/3",
        "name": "Pea Soup",
        "description": "Creamy pea soup topped with melted cheese and sourdough croutons.",
        "offers": {
          "@type": "Offer",
          "sku": "offer-pea-soup",
          "price": "3.49",
          "priceCurrency": "USD"
        },
        "suitableForDiet": "http://schema.org/GlutenFreeDiet"
      }
    }
  ]
}

Ví dụ 3

Ví dụ này cho thấy hasMenuSection dưới dạng một mảng.

{
  "@type": "Menu",
  "@id": "http://www.provider.com/somerestaurant/menu/1",
  "name": "Dine-In Menu",
  "description": "Menu for in-restaurant dining only.",
  "hasMenuSection": [
    {
      "@type": "MenuSection",
      "@id": "http://www.provider.com/somerestaurant/menusection/1",
      "name": "Dinner",
      "description": "Dinner dishes",
      "hasMenuSection": [
        {
          "@type": "MenuSection",
          "@id": "http://www.provider.com/somerestaurant/menusection/2",
          "name": "Starters",
          "description": "Appetizers and such",
          "image": "https://www.provider.com/somerestaurant/starter_dishes.jpg",
          "hasMenuItem": {
            "@type": "MenuItem",
            "@id": "http://www.provider.com/somerestaurant/menuitem/1",
            "name": "Potato Skins",
            "description": "Small serving of stuffed potato skins.",
            "offers": {
              "@type": "Offer",
              "sku": "offer-potato-skins",
              "price": "7.49",
              "priceCurrency": "USD"
            },
            "suitableForDiet": "http://schema.org/GlutenFreeDiet"
          }
        },
        {
          "@type": "MenuSection",
          "@id": "http://www.provider.com/somerestaurant/menusection/3",
          "name": "Soups & Salads",
          "description": "Salads and a few choices of soup",
          "image": "https://thisisarestaurant.com/soup_and_salad_dishes.jpg",
          "hasMenuItem": {
            "@type": "MenuItem",
            "@id": "http://www.provider.com/somerestaurant/menuitem/2",
            "name": "Pea Soup",
            "description": "Creamy pea soup topped with melted cheese and sourdough croutons.",
            "offers": {
              "@type": "Offer",
              "sku": "offer-pea-soup",
              "price": "3.49",
              "priceCurrency": "USD"
            },
            "suitableForDiet": "http://schema.org/GlutenFreeDiet"
          }
        },
        {
          "@type": "MenuSection",
          "@id": "http://www.provider.com/somerestaurant/menusection/4",
          "name": "Steak",
          "description": "Steak Dishes",
          "image": "https://steak.com/steak_dishes.jpg",
          "hasMenuItem": {
            "@type": "MenuItem",
            "@id": "http://www.provider.com/somerestaurant/menuitem/3",
            "name": "Sirloin",
            "description": "Sirloin steak dish.",
            "offers": {
              "@type": "Offer",
              "sku": "offer-sirloin-steak",
              "price": "15.49",
              "priceCurrency": "USD"
            },
            "suitableForDiet": "http://schema.org/GlutenFreeDiet"
          }
        }
      ]
    },
    {
      "@type": "MenuSection",
      "@id": "http://www.provider.com/somerestaurant/menusection/5",
      "name": "Desserts",
      "description": "Dessert dishes.",
      "image": "http://www.provider.com/somerestaurant/dessert_dishes.jpg",
      "hasMenuItem": {
        "@type": "MenuItem",
        "@id": "http://www.provider.com/somerestaurant/menuitem/4",
        "name": "Chocolate Pie",
        "description": "A slice of chocolate pie.",
        "offers": {
          "@type": "Offer",
          "sku": "offer-chocolate-pie",
          "price": "3.49",
          "priceCurrency": "USD"
        }
      }
    }
  ]
}

Để biết thêm ví dụ về các thực thể Menu, hãy xem bài viết Ví dụ về nhà hàng và nguồn cấp dữ liệu thực đơn.

Bảng sau đây liệt kê các thuộc tính của loại MenuDisclaimer:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Lựa chọn này luôn là "MenuTrình bày từ chối trách nhiệm".
@id URL Bắt buộc Giá trị nhận dạng duy nhất của tuyên bố từ chối trách nhiệm trong thực đơn.
text Văn bản Bắt buộc Văn bản của tuyên bố từ chối trách nhiệm. Ví dụ: "Lượng năng lượng trung bình hằng ngày của người lớn là 8700 kJ".
url URL Không bắt buộc URL trỏ đến một trang cung cấp thêm thông tin chi tiết về tuyên bố từ chối trách nhiệm.

Ví dụ sau đây cho thấy cách sử dụng loại MenuDisclaimer:

Ví dụ:

{
    "@type": "Menu",
    "@id": "menu_1",
    "disclaimer": {
        "@type": "MenuDisclaimer",
        "@id": "menu_1_disclaimer_1",
        "text": "The average adult daily energy intake is 8700 kJ",
        "url": "https://partner.domain.com/menu/provider/disclaimer/more-info.html"
    }
}

Mục trong trình đơn để biểu thị mục đó trong trình đơn. Bảng sau đây liệt kê các thuộc tính cho loại MenuItem:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Mục này luôn là "MenuItem".
@id URL Bắt buộc Giá trị nhận dạng duy nhất của món trong thực đơn.
name Văn bản Bắt buộc Văn bản có thể xác định MenuItem khi người dùng đang duyệt xem trình đơn.
description Văn bản Không bắt buộc Nội dung mô tả về mục trong trình đơn.
image URL Không bắt buộc

Hình ảnh của mục trong thực đơn. Hãy làm theo các nguyên tắc sau về hình ảnh:

  • Tỷ lệ khung hình 3:2
  • Độ phân giải tối thiểu: 600 x 400 pixel, 72 dpi
  • Độ phân giải đề xuất: 1400 x 960 pixel 72 dpi
menuAddOn Mảng AddOnMenuSection Không bắt buộc Các mục trong một phần trong trình đơn có thể được thêm dưới dạng tiện ích bổ sung vào mục trong trình đơn.
offers Mảng Offer Bắt buộc*

Một hoặc nhiều ưu đãi để cung cấp MenuItem này. Mô tả thời điểm và mức giá mà MenuItem này có sẵn. Chỉ được có một ưu đãi hợp lệ tại một thời điểm cụ thể. Bạn có thể cung cấp nhiều ưu đãi nếu giá/tình trạng còn hàng thay đổi theo thời gian trong ngày. Nếu mặt hàng thực phẩm khác nhau thông qua một thuộc tính cơ sở (ví dụ: kích thước cho pizza), hãy sử dụng menuItemOption. Giá trị mặc định cho Offer.eligibleQuantity là tối thiểu là 0 và không có giới hạn trên.

Danh sách dưới đây cho thấy những thuộc tính Offer được sử dụng trong MenuItem.

  • Cần có Offer.sku
  • Cần có Offer.price
  • Cần có Offer.priceCurrency
  • Offer.availabilityStarts không bắt buộc
  • Offer.availabilityEnds không bắt buộc
  • Offer.availableDay không bắt buộc
  • Offer.validFrom không bắt buộc
  • Offer.validThrough không bắt buộc
  • Offer.eligibleQuantity không bắt buộc
  • Offer.inventoryLevel không bắt buộc
hasMenuItemOptions Mảng MenuItemOption Bắt buộc Danh sách các tuỳ chọn/biến thể cơ sở cho mục trong trình đơn này. Bạn nên sử dụng các tuỳ chọn để chỉ định các biến thể cơ sở có sẵn cho mục, ví dụ: nhỏ, trung bình và lớn.
suitableForDiet Mảng RestrictedDiet Không bắt buộc Món ăn tuân thủ quy định hạn chế về chế độ ăn đã mô tả (chẳng hạn như "http://schema.org/GlutenFreeDiet" hoặc "http://schema.org/VeganDiet". Đây là danh sách liệt kê các giá trị có thể có.
nutrition NutritionInformation Không bắt buộc Thông tin dinh dưỡng của món ăn, đáng chú ý nhất là lượng calo.
hasAllergen AllergenDetails Không bắt buộc Chất gây dị ứng của món ăn trong mỗi gs1:AllergenDetails. Thêm ngữ cảnh gs1 để sử dụng thuộc tính này: "@context": ["http://gs1.org/voc/", "http://schema.org"]. Và thêm FoodBeverageTobaccoProduct vào loại của MenuItem.
additive Mảng AdditiveDetails Không bắt buộc Chất phụ gia cho món ăn mỗi gs1:AdditiveDetails. Đây là danh sách liệt kê các giá trị có thể có. Thêm ngữ cảnh gs1 để sử dụng thuộc tính này: "@context": ["http://gs1.org/voc/", "http://schema.org"]. Và thêm FoodBeverageTobaccoProduct vào loại của MenuItem.
packaging PackagingDetails Không bắt buộc Thông tin đóng gói và tái chế của Mục trình đơn này theo gs1:PackagingDetails. Thêm ngữ cảnh gs1 để sử dụng thuộc tính này: "@context": ["http://gs1.org/voc/", "http://schema.org"]. Và thêm FoodBeverageTobaccoProduct vào loại của MenuItem.

Các ví dụ sau đây minh hoạ các phần tử MenuItem:

Ví dụ 1

"hasMenuItem": {
  "@type": "MenuItem",
  "@id": "http://www.provider.com/bar/menuitem/1",
  "name": "Potato Skins",
  "description": "Small serving of stuffed potato skins.",
  "offers": {
    "@type": "Offer",
    "sku": "offer-potato-skins",
    "price": "7.49",
    "priceCurrency": "USD"
  },
  "suitableForDiet": "http://schema.org/GlutenFreeDiet"
}

Ví dụ 2

"hasMenuItem": [
  {
    "@type": "MenuItem",
    "@id": "https://www.example.com/1089/product/170067",
    "name": "Veg Grill Burrito",
    "offers": {
      "@type": "Offer",
      "sku": "offer-veg-grill-burrito",
      "price": "12.99",
      "priceCurrency": "USD"
    },
    "menuAddOn": {
      "@type": "AddOnMenuSection",
      "name": "Cheese",
      "@id": "https://www.example.com/1089/addon/1", // Points to an AddOnMenuSection
      "eligibleQuantity":
        "@type": "QuantitativeValue",
        "minValue": 0,
        "maxValue": 2 // Maximum of 2 cheeses are allowed
      }
    }
  },
  {
    "@type": "MenuItem",
    "@id": "https://www.example.com/1089/product/170018",
    "name": "Chicken Taco",
    "offers": {
      "@type": "Offer",
      "sku": "offer-chicken-taco",
      "price": "6.99",
      "priceCurrency": "USD"
    }
  }
]

Ví dụ 3

{
  "@type": "MenuItem",
  "@id": "https://www.example.com/1089/product/170067",
  "name": "Meat Combo",
  "hasMenuItemOptions": [
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "OPTION",
        "value": "Plate",
        "offers": {
          "@type": "Offer",
          "sku": "offer-meat-combo-plate",
          "price": "12.00",
          "priceCurrency": "USD"
        },
        "menuAddOn": [
          {
            "@type": "AddOnMenuSection",
            "name": "Toppings for Plate",
            "@id": "https://www.example.com/1089/addon/1",
            "eligibleQuantity": {
              "@type": "QuantitativeValue",
              "minValue": 0,
              "maxValue": 3
            },
            "hasMenuItem": [
              {
                "@type": "AddOnMenuItem",
                "@id": "https://www.example.com/1089/addon/1/a",
                "name": "Hummus",
                "offers": {
                  "@type": "Offer",
                  "sku": "offer-meat-combo-topping-hummus",
                  "price": "1.00",
                  "priceCurrency": "USD"
                }
              }
              // -- Other Items --
            ]
          }
        ]
      }
    },
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "OPTION",
        "value": "Sandwich"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-meat-combo-sandwich",
        "price": "10.00",
        "priceCurrency": "USD"
      },
      "menuAddOn": [
        {
          "@type": "AddOnMenuSection",
          "name": "Toppings for Sandwich",
          "@id": "https://www.example.com/1089/addon/1",
          "eligibleQuantity": {
            "@type": "QuantitativeValue",
            "minValue": 0,
            "maxValue": 2
          },
          "hasMenuItem": [
            {
              "@type": "AddOnMenuItem",
              "@id": "https://www.example.com/1089/addon/1/a",
              "name": "Hummus",
              "offers": {
                "@type": "Offer",
                "sku": "offer-meat-combo-topping-hummus",
                "price": "1.00",
                "priceCurrency": "USD"
              }
            }
            // -- Other Items --
          ]
        }
      ]
    }
  ]
}

Ví dụ 4

{
  "@type": "MenuItem",
  "@id": "https://www.example.com/1089/product/170067",
  "name": "Pepperoni Pizza",
  "hasMenuItemOptions": [
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "SIZE",
        "value": "Small"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-small",
        "price": "10.00",
        "priceCurrency": "USD"
      }
    },
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "SIZE",
        "value": "Medium"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-medium",
        "price": "15.00",
        "priceCurrency": "USD"
      }
    },
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "SIZE",
        "value": "Large"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-large",
        "price": "20.00",
        "priceCurrency": "USD"
      }
    }
  ]
}

Ví dụ 5:

{
  "@type": ["MenuItem", "FoodBeverageTobaccoProduct"],
  "@id": "http://www.example.com/bar/menuitem/9",
  "name": "Ice Coffee",
  "offers": {
    "@type": "Offer",
    "sku": "offer-ice-coffee",
    "price": "3.99",
    "priceCurrency": "USD"
  },
  "nutrition": {
    "@type": "NutritionInformation",
    "description": "Contains preservatives and artificial flavor"
  },
  "hasAllergen": [
    {
      "@type": "AllergenDetails",
      "allergenType": "http://gs1.org/voc/AllergenTypeCode-LACTOSE",
      "allergenLevelOfContainmentCode":
        "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS"
    },
    {
      "@type": "AllergenDetails",
      "allergenType": "http://gs1.org/voc/AllergenTypeCode-PEANUTS",
      "allergenLevelOfContainmentCode":
        "http://gs1.org/voc/LevelOfContainmentCode-MAY_CONTAIN"
    }
  ],
  "additive": [
    {
      "@type": "AdditiveDetails",
      "additiveName": "caffeine",
      "additiveLevelOfContainment":
        "http://gs1.org/voc/LevelOfContainmentCode-CONTAINS"
    }
  ],
  "packaging": {
    "@type": "PackagingDetails",
    "packagingRecyclingProcessType" :
      "http://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE",
    "hasReturnablePackageDeposit": {
      "@type": "ReturnablePackageDepositDetails",
      "returnablePackageDepositAmount": {
        "@type": "http://gs1.org/voc/PriceSpecification",
        "http://gs1.org/voc/price": "0.10",
        "http://gs1.org/voc/priceCurrency": "USD"
      }
    }
  }
}

Để biết thêm ví dụ về các thực thể MenuItem, hãy xem bài viết Ví dụ về nguồn cấp dữ liệu của nhà hàng và thực đơn.

Một tuỳ chọn để thể hiện các lựa chọn mà người dùng sẽ phải đưa ra khi chọn một món ăn hoặc kết hợp. Người dùng phải chọn một tuỳ chọn, nếu không đơn đặt hàng sẽ bị coi là không hợp lệ. Ví dụ: chọn nhỏ, trung bình hoặc lớn để chọn pizza.

Để biết các trường hợp sử dụng mẫu của MenuItemOption, hãy xem hướng dẫn của chúng tôi về cách tuỳ chỉnh bằng MenuItemOption.

Bảng sau đây liệt kê các thuộc tính của loại MenuItemOption:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Mục này luôn là "MenuItemOption".
value PropertyValue Bắt buộc PropertyValue chứa một cặp tên/giá trị đại diện cho tuỳ chọn.
offers Mảng Offer Bắt buộc

Một hoặc nhiều ưu đãi để cung cấp MenuItemOption này. Mô tả thời điểm và mức giá áp dụng tuỳ chọn mục này trong trình đơn. Chỉ một ưu đãi có hiệu lực tại một thời điểm cụ thể. Bạn có thể có nhiều ưu đãi hợp lệ nếu giá/tình trạng còn hàng có thể thay đổi theo thời gian trong ngày. Đừng sử dụng Offer.eligibleQuantity. MenuItemOption loại trừ lẫn nhau, vì vậy Offer.eligibleQuantity sẽ bị bỏ qua nếu được cung cấp.

Danh sách dưới đây cho thấy những thuộc tính Offer được sử dụng trong MenuItemOption.

  • Cần có Offer.sku
  • Cần có Offer.price
  • Cần có Offer.priceCurrency
  • Offer.availabilityStarts không bắt buộc
  • Offer.availabilityEnds không bắt buộc
  • Offer.availableDay không bắt buộc
  • Offer.validFrom không bắt buộc
  • Offer.validThrough không bắt buộc
  • Offer.eligibleQuantity không bắt buộc
  • Offer.inventoryLevel không bắt buộc
menuAddOn Array of AddOnMenuSection Không bắt buộc Mục trình đơn của những mục được phép có thể thêm dưới dạng tiện ích bổ sung. Chỉ sử dụng thuộc tính này nếu các tiện ích bổ sung dành riêng cho một lựa chọn mục cụ thể trong trình đơn. Nếu không, hãy cung cấp các tiện ích bổ sung bằng thuộc tính MenuItem.menuAddOn.
suitableForDiet Mảng RestrictedDiet Không bắt buộc Danh sách liệt kê cho biết những chế độ ăn mà món này tuân thủ quy định hạn chế về chế độ ăn đã mô tả (chẳng hạn như "http://schema.org/GlutenFreeDiet" hoặc "http://schema.org/VeganDiet").
nutrition NutritionInformation Không bắt buộc Thông tin dinh dưỡng của món ăn, đáng chú ý nhất là lượng calo.
hasAllergen AllergenDetails Không bắt buộc Chất gây dị ứng của món ăn trong mỗi gs1:AllergenDetails. Thêm ngữ cảnh gs1 để sử dụng thuộc tính này: "@context": ["http://gs1.org/voc/", "http://schema.org"]. Và thêm FoodBeverageTobaccoProduct vào loại của MenuItemOption.
additive Mảng AdditiveDetails Không bắt buộc Phụ gia cho món ăn mỗi gs1:AdditiveDetails. Đây là danh sách liệt kê các giá trị có thể có. Thêm ngữ cảnh gs1 để sử dụng thuộc tính này: "@context": ["http://gs1.org/voc/", "http://schema.org"]. Và thêm FoodBeverageTobaccoProduct vào loại của MenuItemOption.
packaging PackagingDetails Không bắt buộc Thông tin đóng gói và tái chế của Mục trình đơn này cho mỗi gs1:PackagingDetails Thêm ngữ cảnh gs1 để sử dụng thuộc tính này: "@context": ["http://gs1.org/voc/", "http://schema.org"]. Và thêm FoodBeverageTobaccoProduct vào loại của MenuItemOption.

Ví dụ sau đây cho thấy các phần tử MenuItemOption:

Ví dụ 1

{
  "@type": "MenuItem",
  "@id": "https://www.example.com/1089/product/170067",
  "name": "Pepperoni Pizza",
  "hasMenuItemOptions": [
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "SIZE",
        "value": "Small"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-small",
        "price": "10.00",
        "priceCurrency": "USD"
      }
    },
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "SIZE",
        "value": "Medium"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-medium",
        "price": "15.00",
        "priceCurrency": "USD"
      }
    },
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "SIZE",
        "value": "Large"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-large",
        "price": "20.00",
        "priceCurrency": "USD"
      }
    }
  ]
}

Ví dụ 2

{
  "@type": "MenuItem",
  "@id": "https://www.example.com/1089/product/170067",
  "name": "Meat Combo",
  "hasMenuItemOptions": [
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "OPTION",
        "value": "Plate",
        "offers": {
          "@type": "Offer",
          "sku": "offer-meat-combo-plate",
          "price": "12.00",
          "priceCurrency": "USD"
        },
        "menuAddOn": [
          {
            "@type": "AddOnMenuSection",
            "name": "Toppings for Plate",
            "@id": "https://www.example.com/1089/addon/1",
            "eligibleQuantity": {
              "@type": "QuantitativeValue",
              "minValue": 0,
              "maxValue": 3
            },
            "hasMenuItem": [
              {
                "@type": "AddOnMenuItem",
                "@id": "https://www.example.com/1089/addon/1/a",
                "name": "Hummus",
                "offers": {
                  "@type": "Offer",
                  "sku": "offer-meat-combo-topping-hummus",
                  "price": "1.00",
                  "priceCurrency": "USD"
                }
              }
              // -- Other Items --
            ]
          }
        ]
      }
    },
    {
      "@type": "MenuItemOption",
      "value": {
        "@type": "PropertyValue",
        "name": "OPTION",
        "value": "Sandwich"
      },
      "offers": {
        "@type": "Offer",
        "sku": "offer-meat-combo-sandwich",
        "price": "10.00",
        "priceCurrency": "USD"
      },
      "menuAddOn": [
        {
          "@type": "AddOnMenuSection",
          "name": "Toppings for Sandwich",
          "@id": "https://www.example.com/1089/addon/1",
          "eligibleQuantity": {
            "@type": "QuantitativeValue",
            "minValue": 0,
            "maxValue": 2
          },
          "hasMenuItem": [
            {
              "@type": "AddOnMenuItem",
              "@id": "https://www.example.com/1089/addon/1/a",
              "name": "Hummus",
              "offers": {
                "@type": "Offer",
                "sku": "offer-meat-combo-topping-hummus",
                "price": "1.00",
                "priceCurrency": "USD"
              }
            }
            // -- Other Items --
          ]
        }
      ]
    }
  ]
}

Mục trong trình đơn để đại diện cho một mục cụ thể trong trình đơn. Bảng sau đây liệt kê các thuộc tính của loại MenuSection:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Mục này luôn là "MenuSection" (Mục trình đơn).
@id URL Bắt buộc Mã nhận dạng duy nhất của mục trong thực đơn.
name Văn bản Bắt buộc Văn bản có thể xác định MenuSection khi người dùng duyệt qua trình đơn.
description Văn bản Không bắt buộc Nội dung mô tả phần thực đơn.
hasMenuSection Mảng MenuSection Không bắt buộc Nhóm con logic của MenuSection. Ví dụ: phần thực đơn Bữa tối có thể có nhiều phần thực đơn phụ như "Món ăn gia cầm" hoặc "Đồ ăn chay".
hasMenuItem Mảng MenuItem Không bắt buộc Các mục trong trình đơn nằm trong MenuSection.
offers Mảng Offer Không bắt buộc

Sử dụng Offer.availabilityStartsOffer.availabilityEnds để cho biết khoảng thời gian phân phát MenuSection này. Đừng sử dụng Offer.eligibleQuantity.

Danh sách sau đây cho biết những thuộc tính Offer được dùng trong MenuSection:

  • Offer.availabilityStarts không bắt buộc
  • Offer.availabilityEnds không bắt buộc
  • Offer.availableDay không bắt buộc
  • Offer.validFrom không bắt buộc
  • Offer.validThrough không bắt buộc
image URL Không bắt buộc Hình ảnh mục trong thực đơn.

Các ví dụ sau đây minh hoạ các thực thể MenuSection:

Ví dụ 1

{
  "@type": "MenuSection",
  "@id": "http://www.provider.com/bar/menusection/4",
  "name": "Steak",
  "description": "Steak Dishes",
  "image": "https://steak.com/steak_dishes.jpg",
  "hasMenuItem": {
    "@type": "MenuItem",
    "@id": "http://www.provider.com/bar/menuitem/3",
    "name": "Sirloin",
    "description": "Sirloin steak dish.",
    "offers": {
      "@type": "Offer",
      "sku": "offer-sirloin-steak",
      "price": "15.49",
      "priceCurrency": "USD"
    },
    "suitableForDiet": "http://schema.org/GlutenFreeDiet"
  }
}

Ví dụ 2

"hasMenuSection": [
  {
    "@type": "MenuSection",
    "@id": "https://www.example.com/1089/categorization/25114480",
    "name": "Main Items",
    "hasMenuItem": [
      {
        "@type": "MenuItem",
        "@id": "https://www.example.com/1089/product/170067",
        "name": "Veg Grill Burrito",
        "offers": {
          "@type": "Offer",
          "sku": "offer-veg-grill-burrito",
          "price": "12.99",
          "priceCurrency": "USD"
        },
        "menuAddOn": {
          "@type": "AddOnMenuSection",
          "name": "Cheese",
          "@id": "https://www.example.com/1089/addon/1", // Points to an AddOnMenuSection
          "eligibleQuantity":
            "@type": "QuantitativeValue",
            "minValue": 0,
            "maxValue": 2 // Maximum of 2 cheeses are allowed
          }
        }
      },
      {
        "@type": "MenuItem",
        "@id": "https://www.example.com/1089/product/170018",
        "name": "Chicken Taco",
        "offers": {
          "@type": "Offer",
          "sku": "offer-chicken-taco",
          "price": "6.99",
          "priceCurrency": "USD"
        }
      }
    ]
  },
  {
    "@type": "AddOnMenuSection",
    "@id": "https://www.example.com/1089/addon/1",
    "name": "AddOnCheese",
    "hasMenuItem": [
      {
        "@type": "AddOnMenuItem",
        "@id": "https://www.example.com/1089/addon/a",
        "name": "Swiss",
        "offers": {
          "@type": "Offer",
          "sku": "offer-swiss",
          "price": "2.99",
          "priceCurrency": "USD"
        }
      },
      {
        "@type": "AddOnMenuItem",
        "@id": "https://www.example.com/1089/addon/b",
        "name": "Mozarella",
        "offers": {
          "@type": "Offer",
          "sku": "offer-mozzarella",
          "price": "1.99",
          "priceCurrency": "USD"
        }
      }
    ]
  }
]

Để biết thêm ví dụ về các thực thể MenuSection, hãy xem bài viết Ví dụ về nhà hàng và nguồn cấp dữ liệu thực đơn.

NutritionInformation

Bảng sau đây mô tả các thuộc tính của loại NutritionInformation. Đơn vị đo lường có phân biệt chữ hoa chữ thường. Ví dụ: "Cal" được chấp nhận, nhưng "cal" thì không.

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Giá trị này luôn là "Dinh dưỡng thông tin".
description Văn bản Không bắt buộc Thông tin dinh dưỡng dưới dạng văn bản tự do. Ví dụ: "Chứa chất bảo quản".
calories Văn bản Không bắt buộc

Lượng calo tính theo Cal, kcal hoặc kJ, sử dụng định dạng sau:

number Cal_kcal_OR_kJ

Ví dụ: "240 Cal".

carbohydrateContent Văn bản Không bắt buộc

Lượng carbohydrate, thường tính bằng g, theo định dạng sau:

number g_OR_mg

Ví dụ: "7 g".

cholesterolContent Văn bản Không bắt buộc

Hàm lượng Cholesterol, thường tính bằng mg, theo định dạng sau:

number g_OR_mg

Ví dụ: "12 mg".

fatContent Văn bản Không bắt buộc

Lượng chất béo, thường tính bằng g, theo định dạng sau:

number g_OR_mg

Ví dụ: "42 g".

fiberContent Văn bản Không bắt buộc

Số g hoặc mg chất xơ, theo định dạng sau:

number g_OR_mg
proteinContent Văn bản Không bắt buộc

Số g hoặc mg protein, sử dụng định dạng sau:

number g_OR_mg
saturatedFatContent Văn bản Không bắt buộc

Số g hoặc mg chất béo bão hoà, sử dụng định dạng sau:

number g_OR_mg
servingSize Văn bản Không bắt buộc Kích cỡ khẩu phần tính bằng mL, L, g hoặc kg, theo thể tích hoặc khối lượng.
sodiumContent Văn bản Không bắt buộc

Số mg hoặc g natri, theo định dạng sau:

number g_OR_mg
sugarContent Văn bản Không bắt buộc

Số g hoặc mg đường, sử dụng định dạng sau:

number g_OR_mg
transFatContent Văn bản Không bắt buộc

Số g hoặc mg chất béo chuyển hoá, theo định dạng sau:

number g_OR_mg
unsaturatedFatContent Văn bản Không bắt buộc

Lượng chất béo không bão hoà, thường tính bằng g, theo định dạng sau:

number g_OR_mg

Các ví dụ sau đây minh hoạ phần tử NutritionInformation:

Ví dụ 1

"nutrition": {
  "@type": "NutritionInformation",
  "calories": "170 Cal",
  "fatContent": "3 g",
  "fiberContent": "2 g",
  "proteinContent": "4 g"
},

Ví dụ 2

{
  "@type": ["MenuItem", "FoodBeverageTobaccoProduct"],
  "@id": "http://www.example.com/bar/menuitem/7",
  "name": "Peach Ice Tea",
  "description": "A 0.5l bottle of peach ice tea.",
  "offers": {
    "@type": "Offer",
    "sku": "offer-peach-ice-tea",
    "price": "2.49",
    "priceCurrency": "USD"
  },
  "nutrition": {
              "@type": "NutritionInformation",
              "description": "Contains preservatives and artificial flavor"
  }
},

Lời đề nghị

Ưu đãi cho một món trong thực đơn. Bảng sau đây mô tả các thuộc tính của loại Offer:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Mục này luôn là "Ưu đãi".
sku Văn bản Câu lệnh có điều kiện

Giá trị nhận dạng duy nhất của mặt hàng. Có thể là giá trị văn bản bất kỳ duy nhất trong Offer. Các giá trị của sku được tham chiếu trong phần Thanh toán và Gửi dưới dạng offerId trong lineitem.

Thuộc tính này chỉ được dùng trong các loại ưu đãi sau:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer
price Văn bản Câu lệnh có điều kiện

Giá của mặt hàng được cung cấp. Ví dụ: "6.00" không có ký hiệu tiền tệ.

Bạn chỉ phải cung cấp thuộc tính này trong các loại ưu đãi sau:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer

Mã này không được dùng trong các loại ưu đãi sau đây:

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
priceCurrency Văn bản Câu lệnh có điều kiện

Đơn vị tiền tệ (ở định dạng gồm 3 chữ cái theo ISO 4217) của giá hoặc thành phần giá, khi được đính kèm vào priceSpecification và các loại phụ của giá.

Bạn chỉ phải cung cấp thuộc tính này trong các loại ưu đãi sau:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer

Mã này không được dùng trong các loại ưu đãi sau đây:

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
availabilityStarts DateTime hoặc Time Không bắt buộc Ngày và giờ hoặc chỉ thời gian áp dụng ưu đãi. Ví dụ: nếu bánh kếp được phục vụ lúc 7:00 sáng, thì giá trị của trường này có thể có dạng như sau: "2017-05-01T07:00:00-07:00". Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.
availabilityEnds DateTime hoặc Time Không bắt buộc Ngày và giờ hoặc chỉ thời gian khi ưu đãi không có hiệu lực. Đây là phiên bản độc quyền. Ví dụ: nếu hết hạn bán bánh kếp lúc 10 giờ sáng, thì giờ bánh kếp cuối cùng có thể được phân phát lúc 9:59:59 sáng. Giá trị của trường này có thể có dạng như sau: "2017-05-01T10:00:00-07:00". Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.
availableDay Mảng DayOfWeek Không bắt buộc

Ngày trong tuần có mặt hàng này. Các giá trị hợp lệ là:

  • "Thứ Hai"
  • "Thứ Ba"
  • "Thứ Tư"
  • "Thứ Năm"
  • "Thứ Sáu"
  • "Thứ Bảy"
  • "Chủ nhật"

Nếu bạn có nhiều thời gian rảnh cho nhiều ngày trong tuần, hãy sử dụng nhiều đối tượng Offer, như trong các ví dụ dưới đây.

validFrom DateTime Không bắt buộc

Ngày và giờ (bao gồm cả múi giờ) mà giá được chỉ định có hiệu lực. Ví dụ: mì ống có giá 8 đô la cho bữa trưa và 10 đô la vào bữa tối. Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.

Thuộc tính này có thể được dùng trong các loại ưu đãi sau:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer
  • AddOnMenuSection.Offer
  • MenuSection.Offer

Thuộc tính này không được sử dụng trong các loại ưu đãi sau đây:

  • Service.Offer
validThrough DateTime Không bắt buộc

Ngày và giờ (bao gồm cả múi giờ) mà sau đó giá được chỉ định sẽ hết hiệu lực. Ví dụ: mì ống là 8 đô la cho bữa trưa và 10 đô la vào bữa tối. Thời gian cho validThrough là chỉ dành riêng: ví dụ: nếu bạn đặt thời gian đó là 6 giờ chiều thì thời gian sẽ hợp lệ cho tới 5:59:59 chiều. Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.

Thuộc tính này có thể được dùng trong các loại ưu đãi sau:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer
  • AddOnMenuSection.Offer
  • MenuSection.Offer

Thuộc tính này không được sử dụng trong các loại ưu đãi sau đây.

  • Service.Offer
eligibleQuantity QuantitativeValue Không bắt buộc

Số lượng đặt hàng mà mặt hàng này được phép. Ví dụ: một nhà hàng có thể yêu cầu đặt hàng ít nhất 10 bánh pizza để có thể giao hàng.

Giá trị này là không bắt buộc. Theo mặc định, không có giới hạn tối đa, nhưng nhà hàng có thể chỉ định một giới hạn. Giới hạn tối thiểu chỉ áp dụng khi người dùng chọn mục đó.

Thuộc tính này có thể được dùng trong các loại ưu đãi sau:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuOption.Offer

Thuộc tính này không được sử dụng trong các loại ưu đãi sau đây.

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
aggregateRating AggregateRating Không bắt buộc

Điểm xếp hạng chung, dựa trên tập hợp các bài đánh giá hoặc điểm xếp hạng về mặt hàng.

Thuộc tính này có thể được dùng trong các loại ưu đãi sau:

  • AddOnMenuItem.Offer
  • MenuItem.Offer

Thuộc tính này không được sử dụng trong các loại sau.

  • AddOnMenuSection.Offer
  • MenuItemOption.Offer
  • MenuSection.Offer
  • Service.Offer
inventoryLevel QuantitativeValue Không bắt buộc

Cấp khoảng không quảng cáo gần đúng hiện tại cho một hoặc nhiều mặt hàng.

Thuộc tính này có thể được dùng trong các loại ưu đãi sau:

  • AddOnMenuItem.Offer
  • MenuItem.Offer
  • MenuItemOption.Offer

Thuộc tính này không được sử dụng trong các loại ưu đãi sau đây:

  • AddOnMenuSection.Offer
  • MenuSection.Offer
  • Service.Offer
priceSpecification Mảng DeliveryChargeSpecification hoặc mảng PaymentChargeSpecification Không bắt buộc

Khi được sử dụng trong Service.Offer, thuộc tính này cho biết thông tin chi tiết về giá giao hàng. Nếu có nhiều đối tượng DeliveryChargeSpecification, thì đối tượng cụ thể nhất sẽ được áp dụng. Sử dụng các đối tượng DeliveryChargeSpecification loại trừ lẫn nhau để tránh mọi sự không rõ ràng.

Thuộc tính này có thể được dùng trong các loại ưu đãi sau:

  • Service.Offer

Thuộc tính này không được sử dụng trong các loại ưu đãi sau đây:

  • AddOnMenuItem.Offer
  • AddOnMenuSection.Offer
  • MenuItem.Offer
  • MenuOption.Offer
  • MenuSection.Offer
offeredBy Mảng mã nhận dạng Restaurant Không bắt buộc

Đại diện cho các nhà hàng đang phục vụ Offer này.

Nếu bạn không chỉ định, Offer này sẽ được cung cấp cho tất cả nhà hàng.

Thuộc tính này có thể được dùng trong các loại ưu đãi sau:

  • AddOnMenuItem.Offer
  • AddOnMenuSection.Offer
  • MenuItem.Offer
  • MenuItemOption.Offer
  • MenuSection.Offer

Thuộc tính này không được sử dụng trong các loại ưu đãi sau đây:

  • Service.Offer
applicableFulfillmentMethod Mảng văn bản Không bắt buộc

Đại diện cho loại dịch vụ mà Offer này được thực hiện. Giá trị có thể là "delivery" hoặc "TakeOUT".

Nếu bạn không chỉ định, thì Offer này sẽ được thực hiện bằng cả phương thức giao hàng và trích xuất.

Thuộc tính này có thể được dùng trong các loại ưu đãi sau:

  • AddOnMenuItem.Offer
  • AddOnMenuSection.Offer
  • MenuItem.Offer
  • MenuItemOption.Offer
  • MenuSection.Offer

Thuộc tính này không được sử dụng trong các loại ưu đãi sau đây:

  • Service.Offer
@id URL Không được dùng nữa Giá trị nhận dạng duy nhất của mặt hàng. Ngừng sử dụng kể từ ngày 25/4/19, thay thế bằng sku như mô tả ở trên.

Các ví dụ sau đây minh hoạ các phần tử Offer:

Ví dụ 1

Ví dụ sau đây minh hoạ một ưu đãi đơn giản:

{
  "@type": "Offer",
  "@id": "https://www.provider.com/menu/74962/139/offer",
  "price": "10",
  "priceCurrency": "USD"
}

Ví dụ 2

Ưu đãi mẫu sau đây cho biết tình trạng còn hàng từ 8 đến 10 giờ sáng vào cuối tuần:

{
  "@type": "Offer",
  "@id": "https://www.provider.com/menu/74962/140/offer",
  "price": "10",
  "priceCurrency": "USD",
  "availabilityStarts": "T08:00:00-07:00",  // Only available from 8-9:59:59 AM
  "availabilityEnds": "T10:00:00-07:00",
  "availableDay": ["Saturday", "Sunday"]  // Only on weekends.
}

Ví dụ 3

Ví dụ sau đây cho biết thời gian rảnh từ 9-10:59:59 sáng vào các ngày thứ Hai, thứ Tư và thứ Sáu, nhưng từ 8-11:59:59 sáng vào các ngày thứ Ba và thứ Năm:

{
  "@type": "Offer",
  "@id": "https://www.provider.com/menu/74962/140/offer",
  "price": "10",
  "priceCurrency": "USD",
  "availabilityStarts": "T09:00:00-07:00",
  "availabilityEnds": "T11:00:00-07:00",
  "availableDay": ["Monday", "Wednesday", "Friday"]
}, {
  "@type": "Offer",
  "@id": "https://www.provider.com/menu/74962/141/offer",
  "price": "10",
  "priceCurrency": "USD",
  "availabilityStarts": "T08:00:00-07:00",
  "availabilityEnds": "T12:00:00-07:00",
  "availableDay": ["Tuesday", "Thursday"]
}

Ví dụ 4

Ví dụ sau đây cho thấy tập hợp số lượng đủ điều kiện của một mục trong trình đơn bổ sung để người dùng có thể đặt hàng tối đa 2 phần của mặt hàng đó.:

{
  "@type": "AddOnMenuItem",
  "@id": "https://www.example.com/1089/addon/a",
  "name": "Ranch",
  "offers": {
    "@type": "Offer",
    "@id": "https://www.example.com/1089/addon/a/offer",
    "price": "2.99",
    "priceCurrency": "USD"
    "eligibleQuantity": {
         "@type": "QuantitativeValue",
         "maxValue": 2
     }
  }
}

Ví dụ 5:

Ví dụ sau đây cho thấy một ưu đãi giao hàng tại một địa điểm cụ thể:

{
  "@type": "Offer",
  "@id": "https://www.provider.com/menu/74962/139/offer",
  "price": "10",
  "priceCurrency": "USD",
  "applicableFulfillmentMethods": ["DELIVERY"],
  "offeredBy": [
    {
      "@type": "Restaurant",
      "@id": "https://www.provider.com/location/1",
    }
  ]
}

OpeningHoursSpecification

Xác định thời điểm cung cấp dịch vụ đặt hàng. Thông thường, giá trị của opens nhỏ hơn giá trị closes. Việc sử dụng thuộc tính openscloses phải tuân theo các nguyên tắc sau:

  • Bạn không bắt buộc phải sử dụng thuộc tính openscloses, nhưng bạn nên ghi chú thích khi có thể đặt hàng. Phương pháp hay nhất để xác định giờ hỗ trợ là thêm một mảng deliveryHours chứa ServiceDeliveryHoursSpecification với các thuộc tính openscloses. Sau đó, bạn có thể đưa một đối tượng AdvanceServiceDeliveryHoursSpecification vào deliveryHours với các thuộc tính openscloses riêng nếu muốn cung cấp khoảng thời gian hạn chế hơn cho việc đặt hàng trước.
  • Nếu openscloses không được chỉ định rõ ràng, chúng tôi sẽ giả định rằng bạn có thể đặt dịch vụ hằng ngày vào mọi thời điểm trong ngày.
  • Thời gian phải được chỉ định theo giờ địa phương cho dịch vụ. Không đưa múi giờ vào giá trị opens hoặc closes. Nếu bạn chỉ định múi giờ, Google sẽ bỏ qua thông tin này.
  • Nếu openscloses giống nhau, chúng tôi sẽ giả định rằng nhà hàng mở cửa trong 0 phút.
  • Nếu opens lớn hơn closes, thì giờ đóng cửa sẽ được diễn giải là vào ngày tiếp theo. Ví dụ: nếu giờ mở cửa được đặt thành 5 giờ chiều ngày 1 tháng 1 và giờ đóng cửa là 2 giờ sáng, thì nhà hàng sẽ được hiểu là đóng cửa lúc 2 giờ sáng ngày 2 tháng 1.
  • Đây chỉ là thời gian dành riêng cho closes. Do đó, nếu thời gian mở và đóng của cửa sổ đặt hàng này lần lượt được đặt là 10 giờ sáng và 4 giờ chiều, thì đơn đặt hàng sau cùng sẽ là 3:59:59 chiều.

Bảng sau đây mô tả các thuộc tính của loại OpeningHoursSpecification:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Giá trị này luôn là "openingHoursSpecification".
@id URL Không bắt buộc Giá trị nhận dạng của OpeningHoursSpecification.
dayOfWeek Mảng DayOfWeek Không bắt buộc

Ngày trong tuần mà những giờ mở cửa này hợp lệ. Các giá trị được chấp nhận là "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy" và "Chủ Nhật". Ví dụ:

"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
]

Nếu bạn không chỉ định ngày nào trong tuần, thì OpeningHoursSpecification sẽ áp dụng cho tất cả các ngày.

opens Time Không bắt buộc

Khi được sử dụng trong thông số kỹ thuật Restaurant, thuộc tính này cho biết thời gian mở cửa của nhà hàng vào(các) ngày nhất định trong tuần. Ví dụ: 6:30 AM được cung cấp là "T06:30:00".

Khi được dùng trong quy cách Service, thuộc tính này cho biết thời gian cụ thể trong ngày bắt đầu từ thời điểm người dùng có thể đặt hàng. Mã này chỉ định thời gian mở cửa khi hệ thống trực tuyến hoạt động và cho phép người dùng đặt hàng. Trong các giờ mở cửa/đóng cửa của hệ thống trực tuyến đó, bạn có thể sử dụng deliveryHours để chỉ định giờ mở cửa/đóng cửa khi người dùng có thể đặt các loại giao hàng đặc biệt.

Thời gian phải được chỉ định theo giờ địa phương cho dịch vụ. Không đưa múi giờ vào giá trị opens. Nếu bạn chỉ định múi giờ, Google sẽ bỏ qua thông tin này.

Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.

closes Time Không bắt buộc

Khi được dùng trong quy cách Service, thuộc tính này cho biết thời gian cụ thể trong ngày mà vượt quá thời gian đặt hàng của người dùng. Giá trị này chỉ định thời gian đóng cửa khi hệ thống trực tuyến hoạt động và cho phép người dùng đặt hàng. Trong các giờ mở cửa/đóng cửa của hệ thống trực tuyến đó, bạn có thể sử dụng deliveryHours để chỉ định giờ mở cửa/đóng cửa khi người dùng có thể đặt các loại giao hàng đặc biệt.

Thời gian phải được chỉ định theo giờ địa phương cho dịch vụ. Không đưa múi giờ vào giá trị closes. Nếu bạn chỉ định múi giờ, Google sẽ bỏ qua thông tin này.

Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.

validFrom DateTime Không bắt buộc

Khi được sử dụng trong thông số kỹ thuật Restaurant, thuộc tính này cho biết ngày mà giờ mở cửa do openscloses chỉ định cho nhà hàng hợp lệ.

Ví dụ: nếu giờ được cung cấp áp dụng cho cả năm 2017, bạn sẽ đặt validFrom thành "2017-01-01T00:00:00-07:00" và validThrough thành "2017-12-31T23:59:59-07:00".

Khi dùng trong quy cách Service, validFrom cho biết ngày bắt đầu đặt hàng của người dùng.

Nếu thuộc tính này không được chỉ định trong nguồn cấp dữ liệu của bạn, Google sẽ giả định rằng Nhà hàng hoặc Dịch vụ hoạt động hằng ngày.

Ngoài ngày, bạn cũng phải nhập phần giờ và múi giờ của giá trị này.

Đối với múi giờ, hãy sử dụng múi giờ của Nhà hàng hoặc Dịch vụ.

Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.

validThrough DateTime Không bắt buộc

Khi được sử dụng trong Restaurant, ngày mà sau đó giờ mở cửa do openscloses chỉ định sẽ không hợp lệ.

Ví dụ: nếu giờ được cung cấp áp dụng cho cả năm 2017, bạn sẽ đặt validFrom thành "2017-01-01T00:00:00-07:00" và validThrough thành "2017-12-31T23:59:59-07:00".

Khi dùng trong quy cách Service, validThrough cho biết ngày kết thúc mà vượt quá ngày kết thúc mà người dùng không thể đặt hàng nữa.

Nếu thuộc tính này không được chỉ định trong nguồn cấp dữ liệu của bạn, Google sẽ giả định rằng Nhà hàng hoặc Dịch vụ hoạt động hằng ngày.

Ngoài ngày, bạn cũng phải cung cấp phần giờ và múi giờ của thuộc tính DateTime.

Đối với múi giờ, hãy sử dụng múi giờ của Nhà hàng hoặc Dịch vụ.

Đây chỉ là thời gian dành riêng cho validThrough. Ví dụ: nếu bạn đặt thời gian là 6 giờ chiều, thì thời gian sẽ hợp lệ cho đến 5:59:59 chiều.

Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.

deliveryHours Mảng ServiceDeliveryHoursSpecification hoặc mảng AdvanceServiceDeliveryHoursSpecification Câu lệnh có điều kiện

Quy cách về thời gian giao hàng hoặc lấy hàng.

Bạn bắt buộc phải sử dụng tham số này trừ phi nhà hàng đóng cửa (có nghĩa là openscloses được đặt và bằng nhau.

  • ServiceDeliveryHoursSpecification: Trong giờ mở cửa/đóng cửa, bạn có thể đặt giờ "mở cửa" và "đóng cửa" khi người dùng có thể đặt hàng càng sớm càng tốt.
  • AdvanceServiceDeliveryHoursSpecification: Trong giờ mở cửa/đóng cửa, bạn có thể đặt giờ "mở cửa" và "đóng cửa" khi người dùng có thể đặt hàng trước.

Các ví dụ sau đây minh hoạ các phần tử OpeningHoursSpecification:

Ví dụ 1

// Ordering times for Monday through Friday
{
  "@type": "OpeningHoursSpecification",
  "deliveryHours": [
    {
      "@type": "AdvanceServiceDeliveryHoursSpecification",
      "deliveryLeadTime": {
        "@type": "QuantitativeValue",
        "value": "60",
        "unitCode": "MIN"
      },
      "dayOfWeek": [
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday"
      ],
      "opens": "T12:00:00", // Advance ordering begins at noon
      "closes": "T23:59:59", // Advance ordering ends at midnight
      "validFrom": "2017-01-01T00:00:00-07:00",
      "validThrough": "2018-12-31T23:59:59-07:00"
    },
    {
      "@type": "ServiceDeliveryHoursSpecification",
      "deliveryLeadTime": {
        "@type": "QuantitativeValue",
        "value": "60",
        "unitCode": "MIN"
      },
      "dayOfWeek": [
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday"
      ],
      "opens": "T10:00:00", // ASAP ordering begins at 10AM
      "closes": "T14:00:00", // ASAP ordering ends at 2PM
      "validFrom": "2017-01-01T00:00:00-07:00",
      "validThrough": "2018-12-31T23:59:59-07:00"
    }
  ]
},

Ví dụ 2

// Ordering times for Saturday and Sunday
{
  "@type": "OpeningHoursSpecification",
  "deliveryHours": [
    {
      // In this case advance orders are unavailable on Saturday and Sunday
      "@type": "ServiceDeliveryHoursSpecification",
      "deliveryLeadTime": {
        "@type": "QuantitativeValue",
        "value": "60",
        "unitCode": "MIN"
      },
      "dayOfWeek": [
        "Saturday",
        "Sunday"
      ],
      "opens": "T12:00:00", // ASAP orders start at noon
      "closes": "T23:59:59", // ASAP orders end at midnight
      "validFrom": "2017-01-01T00:00:00-07:00",
      "validThrough": "2018-12-31T23:59:59-07:00"
    }
  ]
}

Ví dụ 3

"hoursAvailable": {
  "@type": "OpeningHoursSpecification",
  "validFrom": "2016-02-01T00:00:00-07:00",
  "validThrough": "2016-03-01T00:00:00-07:00",
  "opens": "T08:00:00",  // Ordering begins at 8:00AM and ends at 6:00PM.
                         // ASAP and and advance orders are restricted to this
                         // time frame since the user won't be able to place
                         // orders outside of this window.
  "closes": "T18:00:00",
  "deliveryHours": {
    "@type": "ServiceDeliveryHoursSpecification",
    "deliveryLeadTime": {
      "@type": "QuantitativeValue",
      "value": "60",
      "unitCode": "MIN"
    }
  }
},

Ví dụ 4

// List hours available for 2017 and 2018
"hoursAvailable": [
  {
    "@type": "OpeningHoursSpecification",
    // Array containing advance order hours for each day
    "deliveryHours": [
      {
        // Open 10:00AM to 9:29:59PM on Mondays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Monday"
        ],
        "opens": "T10:00:00",
        "closes": "T21:30:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 10:00AM to 9:29:59PM on Tuesdays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Tuesday"
        ],
        "opens": "T10:00:00",
        "closes": "T21:30:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 10:00AM to 9:29:59PM on Wednesdays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Wednesday"
        ],
        "opens": "T10:00:00",
        "closes": "T21:30:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 10:00AM to 9:29:59PM on Thursdays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "dayOfWeek": [
          "Thursday"
        ],
        "opens": "T10:00:00",
        "closes": "T21:30:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 10:00AM to 11:29:59PM on Fridays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Friday"
        ],
        "opens": "T10:00:00",
        "closes": "T23:30:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 10:00AM to 11:29:59PM on Saturdays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Saturday"
        ],
        "opens": "T10:00:00",
        "closes": "T23:30:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      },
      {
        // Open 11:00AM to 6:59:59PM on Sundays
        "@type": "AdvanceServiceDeliveryHoursSpecification",
        "deliveryLeadTime": {
          "@type": "QuantitativeValue",
          "value": "60",
          "unitCode": "MIN"
        },
        "dayOfWeek": [
          "Sunday"
        ],
        "opens": "T11:00:00",
        "closes": "T19:00:00",
        "validFrom": "2017-01-01T00:00:00-07:00",
        "validThrough": "2018-12-31T23:59:59-07:00"
      }
    ]
  }
],

PackagingDetails

Thêm ngữ cảnh gs1 để sử dụng loại này: "@context": ["http://gs1.org/voc/", "http://schema.org"]. Và thêm FoodBeverageTobaccoProduct vào loại của MenuItem hoặc MenuItemOption.

Bảng sau đây mô tả các thuộc tính của loại PackagingDetails:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Thuộc tính này luôn là "PackagingDetails".
packagingRecyclingProcessType Văn bản Không bắt buộc Loại quy trình tái chế đóng gói theo gs1:PackagingRecyclingProcessTypeCode. Ví dụ: http://gs1.org/voc/PackagingRecyclingProcessTypeCode-RECYCLABLE hoặc http://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE
hasReturnablePackageDeposit ReturnablePackageDepositDetails Không bắt buộc Thông tin chi tiết về khoản tiền gửi theo gói có thể trả lại theo gs1:ReturnablePackagegóiDetails. Ví dụ: chai và lon có tiền đặt cọc gói có thể hoàn trả.

Ví dụ sau đây cho thấy cách sử dụng loại PackagingDetails:

{
  "@type": ["MenuItem", "FoodBeverageTobaccoProduct"],
  "@id": "http://www.example.com/bar/menuitem/5",
  "name": "Sparkling Water",
  "description": "A 0.5l bottle of sparking water.",
  "offers": {
    "@type": "Offer",
    "sku": "offer-sparkling-water",
    "price": "1.49",
    "priceCurrency": "USD"
  },
  "packaging": {
    "@type": "PackagingDetails",
    "packagingRecyclingProcessType" :
      "http://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE",
    "hasReturnablePackageDeposit": {
      "@type": "ReturnablePackageDepositDetails",
      "returnablePackageDepositAmount": {
        "@type": "http://gs1.org/voc/PriceSpecification",
        "http://gs1.org/voc/price": "0.05",
        "http://gs1.org/voc/priceCurrency": "USD"
      }
    }
  }
},

PaymentChargeSpecification

Bảng sau đây mô tả các thuộc tính của loại PaymentChargeSpecification:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Giá trị này luôn là "PaymentChargeSpecification".
@id URL Không bắt buộc Giá trị nhận dạng của PaymentChargeSpecification.
price Số Bắt buộc Tổng số tiền của khoản phí. Ví dụ: "6.00" không có ký hiệu tiền tệ.
priceCurrency Văn bản Bắt buộc Mã đơn vị tiền tệ gồm 3 chữ cái theo tiêu chuẩn ISO 4217 của giá. Ví dụ: "USD".
eligibleTransactionVolume PriceSpecification Không bắt buộc Số lượng giao dịch, bằng một đơn vị tiền tệ mà quy cách khoản phí thanh toán này hợp lệ, chẳng hạn như để cho biết số lượng giao dịch mua tối thiểu.
eligibleQuantity QuantitativeValue Không bắt buộc Số lượng đặt hàng mà phí thanh toán hợp lệ. Ví dụ: bạn có thể sử dụng thuộc tính này để yêu cầu số lượng mặt hàng tối thiểu trong một đơn đặt hàng.
validFrom DateTime Không bắt buộc Ngày và giờ (bao gồm cả múi giờ) khi khoản phí thanh toán được chỉ định có hiệu lực. Ví dụ: "2017-05-01T07:00:00-07:00". Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.
validThrough DateTime Không bắt buộc Ngày và giờ (bao gồm cả múi giờ) khi khoản phí thanh toán được chỉ định không hợp lệ. Ví dụ: "2017-05-01T07:30:00-07:00". Thời gian cho validThrough là không dành riêng, ví dụ: nếu bạn đặt thời gian đó là 6 giờ chiều thì thời gian sẽ hợp lệ cho tới 5:59:59 chiều. Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.

Ví dụ sau đây minh hoạ phần tử PaymentChargeSpecification:

Ví dụ:

"priceSpecification": [{
  "@type": "PaymentChargeSpecification",
  "@id": "http://www.provider.com/paymentCharge/bar",
  "priceCurrency": "USD",
  "price": "6.00", // Charges $6 for processing fee
  "eligibleQuantity": {
    "@type": "QuantitativeValue",
    "minValue": 2 // Minimum of two items required
  }
}]

Ngoài "@type": ["PaymentChargeSpecification"], đối tượng có thể được mở rộng bằng UnitPriceSpecification ("@type": ["PaymentChargeSpecification", "UnitPriceSpecification"]). Tiện ích này cung cấp thêm hai thuộc tính cần thiết cho phí dịch vụ được tính theo tỷ lệ phần trăm.

thuộc tính Loại Sự cần thiết Nội dung mô tả
referenceQuantity QuantitativeValue Bắt buộc Số lượng tham chiếu khi áp dụng một mức giá nhất định. Ví dụ: referenceQuantity của giá trị 10 tương ứng với unitCode là "P1" sẽ mang lại 10% giá trị đơn đặt hàng. Hiện chỉ hỗ trợ unitCode "P1".
basePrice Số Không bắt buộc Phí cơ bản ngoài referenceQuantity. Ví dụ: referenceQuantity/10 có unitCode là "P1" và basePrice là 5 bằng USD sẽ mang lại 5 USD + 10% giá trị đơn đặt hàng. Giá trị mặc định là "0".

Ví dụ về phí mang đi

Google cho phép bạn chỉ định trước nhiều loại phí cho người dùng bằng cách sử dụng Offer.PriceSpecification của thực thể Dịch vụ.

Xin lưu ý rằng chúng tôi hiện chỉ hỗ trợ một PaymentChargeSpecification. Kết hợp tất cả các loại phí vào một PaymentChargeSpecification duy nhất

Nếu không có phí, Offer.PriceSpecification sẽ bị bỏ qua.

  • Ví dụ 1: Phí dịch vụ là 5% tổng phụ của giỏ hàng
  • Ví dụ 2: Phí dịch vụ là 5 USD
  • Ví dụ 3: Phí hành lý là 0,1 đô la và phí dịch vụ là 5% tổng phụ của giỏ hàng
  • Ví dụ 4: Phí hành lý là 0,1 USD và phí dịch vụ là 1 USD
  • Ví dụ 5: Phí dịch vụ là 5% và tiền boa bắt buộc là 10% của tổng phụ của giỏ hàng

Ví dụ 1

priceSpecification [
  {
    "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "5.00", // 5%
      "unitCode": "P1" // P1 == %
    },
    "priceCurrency": "USD"
  }
]

Ví dụ 2

priceSpecification [
  {
    "@type": ["PaymentChargeSpecification"],
    "priceCurrency": "USD",
    "price": "5.00"
  }
]

Ví dụ 3

priceSpecification [
  {
    "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "5.00", // 5%
      "unitCode": "P1", // P1 == %
    },
    "priceCurrency": "USD",
    "basePrice": "0.10" // Bag fee $0.1
  }
]

Ví dụ 4

priceSpecification [
  {
    "@type": ["PaymentChargeSpecification"],
    "priceCurrency": "USD",
    "price": "1.10" //$1 + $0.1
  }
]

Ví dụ 5:

priceSpecification [
  {
    "@type": ["PaymentChargeSpecification", "UnitPriceSpecification"],
    "referenceQuantity": {
      "@type": "QuantitativeValue",
      "value": "15.00", // 5% + 10%
      "unitCode": "P1" // P1 == %
    },
    "priceCurrency": "USD"
  }
]

Địa điểm

Bảng sau đây mô tả các thuộc tính của loại Place:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Địa điểm này luôn là "Địa điểm".
address PostalAddress Bắt buộc Địa chỉ của địa điểm.

Ví dụ sau đây cho thấy một phần tử Địa điểm:

Ví dụ:

{
  "@type": "Place", // area2
  "address": {
    "@type": "PostalAddress",
    "postalCode": "94041",
    "addressCountry": "US"
  }
},

PostalAddress

Bảng sau đây mô tả các thuộc tính của loại PostalAddress:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Địa chỉ này luôn là "PostalAddress".
addressLocality Văn bản Bắt buộc* Địa phương hoặc thành phố. Ví dụ: "San Francisco".
addressRegion Văn bản Bắt buộc* Khu vực hoặc tiểu bang. Ví dụ: "CA".
postalCode Văn bản Bắt buộc* Mã bưu chính. Ví dụ: "94102".
streetAddress Văn bản Không bắt buộc Địa chỉ đường phố. Ví dụ: "1600 Amphitheatre Pkwy".
addressCountry Văn bản Bắt buộc Mã quốc gia gồm hai chữ cái theo ISO 3166-1 alpha-2 . Ví dụ: "US".

Nhà cung cấp dịch vụ phân phối có thể liệt kê các thuộc tính này để chỉ định Service.areaServed nơi cung cấp dịch vụ.

Khi được sử dụng trong Restaurant.address, bạn phải cung cấp mọi thuộc tính được liệt kê trong PostalAddress.

Ví dụ sau đây cho thấy một phần tử PostalAddress:

Ví dụ:

"address": {
  "@type": "PostalAddress",
  "streetAddress": "12345 Bar Avenue",
  "addressLocality": "San Francisco",
  "addressRegion": "CA",
  "postalCode": "94124",
  "addressCountry": "US"
},

PriceSpecification

Bảng sau đây mô tả các thuộc tính của loại PriceSpecification:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Thuộc tính này luôn là "PriceSpecification".
@id URL Không bắt buộc Giá trị nhận dạng của PriceSpecification.
minPrice Số Không bắt buộc Giá thấp nhất nếu giá là một khoảng giá.
maxPrice Số Không bắt buộc Giá cao nhất nếu là một khoảng giá.
priceCurrency Văn bản Bắt buộc Mã đơn vị tiền tệ gồm 3 chữ cái theo tiêu chuẩn ISO 4217 của giá. Ví dụ: "USD".
eligibleQuantity QuantitativeValue Không bắt buộc Số lượng đặt hàng mà quy cách giá hợp lệ. Ví dụ: giá có thể là 2 đô la cho mỗi pound hoặc 2 mặt hàng tính với một đô la.

Ví dụ sau đây cho thấy một phần tử PriceSpecification:

Ví dụ 1

"eligibleTransactionVolume": {
  "@type": "PriceSpecification",
  "minPrice": "20.00", // Minimum order price for delivery is $20
  "priceCurrency": "USD"
}

PropertyValue

Cặp giá trị thuộc tính được dùng để mô tả các lựa chọn trong MenuItemOption.

Bảng sau đây liệt kê các thuộc tính của loại PropertyValue:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Giá trị này luôn là "PropertyValue".
name Văn bản Bắt buộc

Tên hoặc loại lựa chọn.

Sau đây là các tên hợp lệ khi dùng trong MenuItem:

  • "SIZE": Kích thước của MenuItem. Ví dụ: nhỏ, trung bình hoặc lớn.
  • "OPTION": Bất kỳ biến thể nào khác ngoài kích thước (như món ăn có thể là rau trộn hoặc bánh mì kẹp). Nếu bạn không phân biệt được "SIZE" và "OPTION", hãy sử dụng "OPTION".

Tên hợp lệ khi dùng trong AddOnMenuItem:

  • "APPLICABLE_ITEM_OPTION": Một lựa chọn cho tiện ích bổ sung chỉ áp dụng khi được dùng với MenuItem cùng với "SIZE/OPTION" tương ứng.
  • "PIZZA_SIDE": Dành riêng cho pizza, tiện ích bổ sung này chỉ hợp lệ cho một phần/nguyên chiếc pizza (như lớp phủ nấm ở bên trái, bên phải hoặc toàn bộ pizza).
  • "SIZE": Một lựa chọn để chỉ định kích thước của tiện ích bổ sung (chẳng hạn như khoai tây chiên cỡ lớn dùng làm món ăn bổ sung cho một bữa ăn kết hợp).
  • "OPTION": Mọi biến thể khác kích thước. Nếu bạn không phân biệt được "SIZE" và "OPTION", hãy sử dụng "OPTION".
value Văn bản Bắt buộc

Giá trị của lựa chọn. Các giá trị có thể là chuỗi bất kỳ và được hiển thị dưới dạng. Sau đây là các giá trị hợp lệ:

  • "PIZZA_SIDE": Giá trị tương ứng sẽ là "PIZZA_SIDE_LEFT", "PIZZA_SIDE_RIGHT" hoặc "PIZZA_SIDE_WHOLE" cho một bánh pizza.
  • "APPLICABLE_ITEM_OPTION": Giá trị này phải xuất hiện ở một trong các lựa chọn "OPTION/SIZE" tương ứng cho mục menuItemOptions của MenuItem gốc.

QuantitativeValue

Bảng sau đây mô tả các thuộc tính của loại QuantitativeValue:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Giá trị này luôn là "QuantitativeValue".
value Số Không bắt buộc Giá trị của nút giá trị định lượng hoặc nút giá trị thuộc tính.
unitCode Văn bản hoặc URL Không bắt buộc

Đơn vị đo lường dưới dạng Mã chung UN/CEINFORMATION hoặc một URL.

Đối với những mã không phải là Mã chung UN/CExuất, bạn có thể dùng một tiền tố theo sau là dấu hai chấm.

maxValue Số Không bắt buộc Giá trị trên của một số đặc điểm hoặc đặc tính.
minValue Số Không bắt buộc Giá trị thấp hơn của một số đặc điểm hoặc đặc tính.

Các ví dụ sau đây minh hoạ cách sử dụng loại QuantitativeValue:

Ví dụ 1

"deliveryLeadTime": {
  "@type": "QuantitativeValue",
  "value": "60",
  "unitCode": "MIN"
}

Ví dụ 2

"menuAddOn": {
  "@type": "AddOnMenuSection",
  "name": "Cheese",
  "@id": "https://www.example.com/1089/addon/1", // Points to an AddOnMenuSection
  "eligibleQuantity":
    "@type": "QuantitativeValue",
    "minValue": 0,
    "maxValue": 2 // Maximum of 2 cheeses are allowed
  }
}

Ví dụ 3

"priceSpecification": [
  {
    "@type": "DeliveryChargeSpecification",
    "@id": "http://www.provider.com/defaultdeliveryfee/foo",
    "price": "10.0",
    "priceCurrency": "USD",
    "eligibleQuantity": {
      "@type": "QuantitativeValue",
      "minValue": 3  // Minimum of 3 items required for delivery
    }
  },
  {
    "@type": "DeliveryChargeSpecification",
    "@id": "http://www.provider.com/deliveryfee/foo/1",
    "price": "20.0",
    "priceCurrency": "USD",
    "validFrom":"T18:00:00", // Valid from 6:00PM
    "validThrough":"T22:00:00", // Valid to 9:59:59PM
    "eligibleQuantity": {
      "@type": "QuantitativeValue",
      "minValue": 3  // Minimum of 3 items required for delivery
    }
  }
]

Nhà hàng

Bảng sau đây liệt kê các thuộc tính của loại Restaurant:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Địa chỉ này luôn là "Nhà hàng".
@id URL Bắt buộc Giá trị nhận dạng duy nhất của nhà hàng hoặc nhà cung cấp dịch vụ giao hàng. Ví dụ: "http://www.provider.com/326", trong đó "326" là giá trị nhận dạng duy nhất của nhà hàng.
name Văn bản Bắt buộc Văn bản có thể xác định Restaurant trong quá trình đặt hàng.
url URL Bắt buộc URL trên miền đại diện cho nhà hàng. Ví dụ: "http://www.provider.com/someanswer".
sameAs URL Không bắt buộc Trang web chính thức của nhà hàng. Ví dụ: "http://www.someNH.com".
email Văn bản Không bắt buộc Địa chỉ email liên hệ của nhà hàng.
description Văn bản Không bắt buộc Nội dung mô tả nhà hàng.
telephone Văn bản Bắt buộc

Số điện thoại ở định dạng sau:

"[+][country_code][phone_#_with_area_code]"

Ví dụ: "+16501234567".

priceRange Văn bản Không bắt buộc Nhiều mức giá. Ví dụ: "$$" ($-Inexpensive, $$-Medium, $$$-Expensive, $$$$-Very Expensive).
logo URL Optional Logo of the restaurant in PNG, JPG, or GIF format. For example, "http://www.somerestaurant.com/logo.png".
image URL Optional Image of the restaurant.
servesCuisine Array of Text Optional Food types that are served at the restaurant. For example, ["sushi","Asian fusion"].
address PostalAddress Required* Address of the restaurant.
geo GeoCoordinates Optional* Geographic coordinates of the restaurant.
suitableForDiet Array of RestrictedDiet Optional Dietary restrictions this restaurant accommodates (like kosher, vegan, or gluten-free diets). It is an enumerated list.
aggregateRating AggregateRating Optional Overall rating, based on a collection of reviews or ratings of the restaurant.
additionalProperty Array of name value string pairs Optional

A restaurant imprint is a section of additional information about the restaurant, such as legal name, legal address, and registration number. This information can be formatted using "\n".

For example "additionalProperty": [{"name": "imprint", "value": "first row\nsecondrow\n"},]

The following examples show the usage of the Restaurant type:

Example 1

{
  "@type": "Restaurant",
  "@id": "http://www.provider.com/somerestaurant",
  "url": "www.provider.com/somerestaurant",
  "name": "Some Restaurant",
  "sameAs": "http://www.somerestaurant.com",
  "image": "http://www.somerestaurant.com/image-of-some-restaurant.jpg",
  "description": "This is the Some Restaurant located on 345 Spear St. San Francisco, 94105 CA. It serves Indian-Mexican fusion cuisine",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "San Francisco",
    "addressRegion": "CA",
    "postalCode": "94105",
    "streetAddress": "345 Spear St",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": "37.391115",
    "longitude": "-122.081099"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.4",
    "reviewCount": "89"
  },
  "priceRange": "$$",
  "telephone": "+16501234567", // Bắt buộc phải có Mã quốc gia (+1)
  "servesCuisine": [
    "Ấn Độ-Mexican Fusion"
  ]
},
  
  

Ví dụ 2

{
  "@type": "Restaurant",
  "@id": "http://www.example.com/threebrotherstacos",
  "name": "Three Brothers Tacos",
  "address": {
        "@type": "PostalAddress",
        "addressLocality": "Mountain View",
        "addressRegion": "CA",
        "postalCode": "94041",
        "streetAddress": "123 Foo St",
        "addressCountry": "US"
  },
  "additionalProperty": [
    {"name": "imprint", "value": "Three Brothers Tacos\n123 FooSt\nMountain View\nCA 94041, United States\nemail: contact@threebrotherstacos.com\n\nCommercial Register: 123456789"}
  ]
}

Để biết thêm ví dụ về các thực thể Restaurant, hãy xem bài viết Ví dụ về nhà hàng và nguồn cấp dữ liệu thực đơn.

ReturnablePackageDepositDetails

Để sử dụng loại này, hãy thêm ngữ cảnh gs1: "@context":

["http://gs1.org/voc/", "http://schema.org"]

Sau đó, hãy thêm FoodBeverageTobaccoProduct vào loại MenuItem hoặc MenuItemOption thích hợp.

Bảng sau đây mô tả các thuộc tính của loại ReturnablePackageDepositDetails:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Giá trị này luôn là "ReturnablePackageBufferDetails".
returnablePackageDepositAmount gs1:PriceSpecification Không bắt buộc Số tiền đặt cọc cho mặt hàng này theo gs1:PriceSpecification. Ví dụ: Đặt cọc 0, 25 USD cho mỗi lon.

Ví dụ sau đây cho thấy cách sử dụng loại ReturnablePackageDepositDetails:

{
  "@type": ["MenuItem", "FoodBeverageTobaccoProduct"],
  "@id": "http://www.example.com/bar/menuitem/5",
  "name": "Sparkling Water",
  "description": "A 0.5l bottle of sparking water.",
  "offers": {
    "@type": "Offer",
    "sku": "offer-sparkling-water",
    "price": "1.49",
    "priceCurrency": "USD"
  },
  "packaging": {
    "@type": "PackagingDetails",
    "packagingRecyclingProcessType" :
      "http://gs1.org/voc/PackagingRecyclingProcessTypeCode-REUSABLE",
    "hasReturnablePackageDeposit": {
      "@type": "ReturnablePackageDepositDetails",
      "returnablePackageDepositAmount": {
        "@type": "http://gs1.org/voc/PriceSpecification",
        "http://gs1.org/voc/price": "0.05",
        "http://gs1.org/voc/priceCurrency": "USD"
      }
    }
  }
},

Dịch vụ

Mô tả việc phân phối một Hành động đặt hàng hai đầu từ một nhà hàng đến một vị trí địa lý của một tổ chức giao hàng.

Bảng sau đây mô tả các thuộc tính của loại Service:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc

Loại nguồn cấp dữ liệu.

  • Service: Sử dụng loại này cho tất cả nguồn cấp dữ liệu Dịch vụ đang hoạt động.
  • DisabledService: Chỉ sử dụng loại này khi bạn phải vô hiệu hoá một thực thể Dịch vụ do một sự kiện không mong muốn, và bạn không biết khi nào dịch vụ được thiết lập lại.
@id URL Bắt buộc Giá trị nhận dạng cho dịch vụ thực hiện đơn hàng. Ví dụ: "http://www.provider.com/service/1".
description Văn bản Không bắt buộc Nội dung mô tả về mặt hàng.
serviceType Văn bản Bắt buộc Loại dịch vụ được cung cấp. Giá trị có thể là "delivery" hoặc "TakeOUT".
provider Restaurant Bắt buộc Tham chiếu đến giá trị nhận dạng duy nhất của nhà hàng. Ví dụ: "http://www.provider.com/someanswer".
areaServed Mảng GeoShape, Place hoặc GeoCircle Câu lệnh có điều kiện Khu vực địa lý nơi cung cấp dịch vụ. Trường này là trường không bắt buộc theo mặc định nhưng bắt buộc nếu giá trị serviceType là "PHÂN PHỐI".
hoursAvailable Mảng OpeningHoursSpecification Bắt buộc Giờ cung cấp dịch vụ này.
specialOpeningHoursSpecification Mảng OpeningHoursSpecification, ServiceDeliveryHoursSpecification hoặc AdvanceServiceDeliveryHoursSpecification Không bắt buộc

Thời gian ghi đè OpeningHoursSpecification chung hơn hoặc thời gian thực hiện đơn hàng. Bạn thường dùng trường này để xác định ngày lễ và các loại đóng cửa tạm thời khác hoặc các thay đổi về giờ hoạt động.

Xác định phạm vi ngày đặc biệt bằng cách sử dụng các thuộc tính validFromvalidThrough. Bạn phải cung cấp giờ và múi giờ khi chỉ định các thuộc tính này.

offers Mảng Offer Câu lệnh có điều kiện

Thông tin chi tiết về dịch vụ giao hàng của một nhà hàng cụ thể. Theo mặc định, trường này là trường không bắt buộc nhưng bắt buộc nếu serviceType là "PHÂN PHỐI".

Bạn không bắt buộc phải sử dụng thuộc tính Offer.priceSpecification trong Dịch vụ. Không có thuộc tính Offer nào khác được sử dụng ở đây.

hasOfferCatalog [Menu, Danh mục ưu đãi] Bắt buộc

Chỉ định một trình đơn cho dịch vụ này. Bạn có thể tạo một thực đơn riêng cho từng dịch vụ (như mua mang đi, giao hàng và đặt ăn).

Bạn phải chỉ định cả MenuOfferCatalog cho loại này. Ví dụ:

"hasOfferCatalog": {
"@type": ["Menu", "OfferCatalog"],
"@id": "https://www.provider.com/restaurant/menu/1"
}
additionalProperty Mảng {name, value} Không bắt buộc

Thông tin cấu hình dịch vụ không bắt buộc. Các mục dự kiến phải là một đối tượng có khoá name tương ứng với tên trường không bắt buộc. Khoá value là một giá trị phù hợp theo ngữ cảnh cho trường đó.

Hãy xem tài liệu tham khảo về ServingConfig để biết thêm thông tin về các tên và giá trị cụ thể.

"additionalProperty": [{
  "name": "disableOrderInstructions",
  "value": false
}, {
  "name": "disableMenuItemSpecialInstructions",
  "value": false
}, {
  "name": "disableTipWidget",
  "value": false
}, {
  "name": "disablePromoWidget",
  "value": false
}, {
  "name": "menuItemSpecialInstructionsMaxLength",
  "value": 256
}, {
  "name": "orderInstructionsMaxLength",
  "value": 256
}]
potentialAction URL Không bắt buộc

Chứa URL của dịch vụ giao hàng/lấy đồ ăn mang về. Dịch vụ này sẽ được sử dụng trong khi chuyển từ trải nghiệm đặt đồ ăn hai đầu sang dịch vụ chuyển hướng. Ví dụ: "potentialAction": { "url": "https://fopatestagent.com/ordering/advertisers-1/delivery" }

Ví dụ sau đây minh hoạ cách sử dụng Loại dịch vụ:

Ví dụ:

{
  "@type": "Service",
  "@id": "http://www.provider.com/service/1",
  "serviceType": "DELIVERY",
  "provider": {
    "@type": "Restaurant",
    "@id": "http://www.provider.com/threebrotherstacos"
  },
  "potentialAction": {
    "url": "https://foprovider.com/ordering/restaurant-1/delivery"
  },
  "hoursAvailable": [
    // Ordering times for Monday through Friday
    {
      "@type": "OpeningHoursSpecification",
      "deliveryHours": [
        {
          "@type": "AdvanceServiceDeliveryHoursSpecification",
          "deliveryLeadTime": {
            "@type": "QuantitativeValue",
            "value": "60",
            "unitCode": "MIN"
          },
          "dayOfWeek": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday"
          ],
          "opens": "T12:00:00", // Advance ordering begins at noon
          "closes": "T23:59:59", // Advance ordering ends at midnight
          "validFrom": "2017-01-01T00:00:00-07:00",
          "validThrough": "2018-12-31T23:59:59-07:00"
        },
        {
          "@type": "ServiceDeliveryHoursSpecification",
          "deliveryLeadTime": {
            "@type": "QuantitativeValue",
            "value": "60",
            "unitCode": "MIN"
          },
          "dayOfWeek": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday"
          ],
          "opens": "T10:00:00", // ASAP ordering begins at 10AM
          "closes": "T14:00:00", // ASAP ordering ends at 2PM
          "validFrom": "2017-01-01T00:00:00-07:00",
          "validThrough": "2018-12-31T23:59:59-07:00"
        }
      ]
    },
    // Ordering times for Saturday and Sunday
    {
      "@type": "OpeningHoursSpecification",
      "deliveryHours": [
        {
          // In this case advance orders are unavailable on Saturday and Sunday
          "@type": "ServiceDeliveryHoursSpecification",
          "deliveryLeadTime": {
            "@type": "QuantitativeValue",
            "value": "60",
            "unitCode": "MIN"
          },
          "dayOfWeek": [
            "Saturday",
            "Sunday"
          ],
          "opens": "T12:00:00", // ASAP orders start at noon
          "closes": "T23:59:59", // ASAP orders end at midnight
          "validFrom": "2017-01-01T00:00:00-07:00",
          "validThrough": "2018-12-31T23:59:59-07:00"
        }
      ]
    }
  ],
  "hasOfferCatalog": {
    "@type": ["Menu", "OfferCatalog"],
    "@id": "https://www.provider.com/menu/1"
  },
  "areaServed": [{
      "@type": "GeoCircle", // area1
      "geoMidpoint": {
        "@type": "GeoCoordinates",
        "latitude": "42.362757",
        "longitude": "-71.087109"
      },
      "geoRadius": "10000"
    },
    {
      "@type": "Place", // area2
      "address": {
        "@type": "PostalAddress",
        "postalCode": "94041",
        "addressCountry": "US"
      }
    },
    {
      "@type": "GeoShape", // area3
      // Specify latitude first (i.e., lat long lat long ...)
      "polygon": "37.418128 -122.098167 37.382755 -122.118968 37.368551 -122.047978 37.400949 -122.048106 37.418128 -122.098167"
    },
    {
      "@type": "GeoShape", // area4
      // Specify latitude first (i.e., lat long lat long ...)
      "polygon": "37.806000 -122.425592 37.775849 -122.419043 37.795547 -122.394046 37.808747 -122.412619"
    },
    {
      "@type": "GeoCircle", // area5
      "geoMidpoint": {
        "@type": "GeoCoordinates",
        "latitude": "37.7392607",
        "longitude": "-122.3895522"
      },
      "geoRadius": "4505"
    }
  ],
  "offers": {
    "@type": "Offer",
    "priceSpecification": [{
        "@type": "DeliveryChargeSpecification",
        "@id": "http://www.provider.com/threebrotherstacos/deliveryfee/1",
        "price": "8.00", // Charges $8 for area5
        "priceCurrency": "USD",
        "eligibleTransactionVolume": {
          "@type": "PriceSpecification",
          "minPrice": "20.00",
          "priceCurrency": "USD"
        },
        "eligibleRegion": [ // area5
          {
            "@type": "GeoCircle",
            "geoMidpoint": {
              "@type": "GeoCoordinates",
              "latitude": "37.7392607",
              "longitude": "-122.3895522"
            },
            "geoRadius": "4505"
          }
        ]
      },
      {
        "@type": "DeliveryChargeSpecification",
        "@id": "http://www.provider.com/threebrotherstacos/defaultdeliveryfee",
        "price": "6.00", // Charges $6 when delivered from Foo restaurant to area1, area2, area3 and area4 (Default charge)
        "priceCurrency": "USD",
        "eligibleTransactionVolume": {
          "@type": "PriceSpecification",
          "minPrice": "20.00", // Minimum order price for delivery is $20
          "priceCurrency": "USD"
        }
      }
    ]
  }
},

Để xem thêm ví dụ về thực thể Dịch vụ, hãy xem bài viết Ví dụ về nguồn cấp dữ liệu dịch vụ.

ServiceDeliveryHoursSpecification

Biểu thị giờ thực hiện đơn hàng để người dùng lên lịch giao hàng và lấy hàng sớm nhất có thể.

Thông thường, giá trị của opens nhỏ hơn giá trị của closes. Các nguyên tắc sau đây áp dụng cho việc sử dụng các thuộc tính openscloses:

  • Bạn không bắt buộc phải sử dụng thuộc tính openscloses cho ServiceDeliveryHoursSpecification, nhưng bạn nên thêm các thuộc tính đó.
  • Thời gian phải được chỉ định theo giờ địa phương cho dịch vụ. Không đưa múi giờ vào giá trị opens hoặc closes. Nếu bạn chỉ định múi giờ, Google sẽ bỏ qua thông tin múi giờ.
  • Nếu openscloses không được chỉ định rõ ràng, chúng tôi sẽ giả định rằng tính năng đặt hàng sớm nhất có thể vào mọi lúc.
  • Nếu openscloses giống nhau, thì chúng tôi sẽ giả định rằng không có thứ tự sớm nhất có thể.
  • Nếu opens lớn hơn closes, thì giờ đóng cửa sẽ được diễn giải là vào ngày tiếp theo. Ví dụ: nếu giờ mở cửa được đặt thành 5 giờ chiều ngày 1 tháng 1 và giờ đóng cửa là 2 giờ sáng, thì nhà hàng sẽ được hiểu là đóng cửa lúc 2 giờ sáng ngày 2 tháng 1.

Bảng sau đây mô tả các thuộc tính của loại ServiceDeliveryHoursSpecification:

Tài sản Loại Sự cần thiết Nội dung mô tả
@type Văn bản Bắt buộc Giá trị này luôn là "ServicedeliveryHoursSpecification".
validFrom DateTime Không bắt buộc

Ngày và giờ (bao gồm cả múi giờ) mà người dùng có thể thực hiện đơn đặt hàng sớm nhất có thể. Ví dụ: "2017-05-01T07:00:00-07:00". Nếu bạn không đặt thuộc tính này, thuộc tính này được giả định là hợp lệ mỗi ngày.

Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.

validThrough DateTime Không bắt buộc

Ngày và giờ (bao gồm cả múi giờ) mà sau đó không thể thực hiện đơn đặt hàng sớm nhất có thể của người dùng. Ví dụ: "2017-05-01T07:00:00-07:00". Nếu bạn không đặt thuộc tính này, thì thuộc tính sẽ được giả định là hợp lệ mỗi ngày.

Đây chỉ là thời gian dành riêng cho validThrough. Ví dụ: nếu bạn đặt thời gian đó là 6 giờ chiều, thì thời gian sẽ hợp lệ cho đến 5:59:59 chiều.

Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.

opens Time Không bắt buộc

Thời gian bắt đầu dịch vụ giao hàng để thực hiện đơn đặt hàng sớm nhất có thể của người dùng. Ví dụ: "T10:30:00".

Thời gian phải được chỉ định theo giờ địa phương cho dịch vụ. Không đưa múi giờ vào giá trị opens. Nếu bạn chỉ định múi giờ, Google sẽ bỏ qua thông tin này.

Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.

closes Time Không bắt buộc

Thời gian không còn cung cấp dịch vụ giao hàng cho đơn đặt hàng sớm nhất có thể của người dùng. Ví dụ: "T23:59:59".

Đây chỉ là thời gian dành riêng cho closes. Do đó, nếu bạn đặt giờ mở cửa/đóng cửa của ServiceDeliveryHoursSpecification này là 10 giờ sáng và 4 giờ chiều, thì đơn đặt hàng sau cùng đó sẽ là 3:59:59 chiều.

Thời gian phải được chỉ định theo giờ địa phương cho dịch vụ. Không đưa múi giờ vào giá trị closes. Nếu bạn chỉ định múi giờ, Google sẽ bỏ qua thông tin này.

Để biết thêm thông tin, hãy xem bài viết Định dạng ngày giờ và thời gian.

dayOfWeek Mảng DayOfWeek Không bắt buộc

Ngày trong tuần mà dịch vụ này khả dụng cho đơn đặt hàng sớm nhất có thể của người dùng. Sau đây là các giá trị hợp lệ:

  • "Thứ Hai"
  • "Thứ Ba"
  • "Thứ Tư"
  • "Thứ Năm"
  • "Thứ Sáu"
  • "Thứ Bảy"
  • "Chủ nhật"

Nếu bạn không chỉ định ngày nào trong tuần, thì ServiceDeliveryHoursSpecification sẽ áp dụng cho tất cả các ngày.

deliveryLeadTime QuantitativeValue Không bắt buộc Thời gian giao hàng dự kiến (tính theo phút) sau khi đặt hàng. Bạn nên đặt thuộc tính này. Đặt trường value của QuantitativeValue thành số phút và unitCode thành "MIN".

Ví dụ sau đây cho thấy một phần tử ServiceDeliveryHoursSpecification:

Ví dụ 1

{
  "@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"
  }
},

Ví dụ 2

{
  "@type": "ServiceDeliveryHoursSpecification",
  "opens": "T08:00:00",
  "closes": "T17:00:00",
  "deliveryLeadTime": {
    "@type": "QuantitativeValue",
    "minValue": "30",
    "maxValue": "50",
    "unitCode": "MIN"
  }
}
    

Enum

RestrictedDiet

Loại RestrictedDiet có thể có các giá trị sau:

  • http://schema.org/DiabeticDiet
  • http://schema.org/GlutenFreeDiet
  • http://schema.org/HalalDiet
  • http://schema.org/HinduDiet
  • http://schema.org/KosherDiet
  • http://schema.org/LowCalorieDiet
  • http://schema.org/LowFatDiet
  • http://schema.org/LowLactoseDiet
  • http://schema.org/LowSaltDiet
  • http://schema.org/VeganDiet
  • http://schema.org/VegetarianDiet