Nguồn cấp dữ liệu Địa điểm yêu thích (POI)

Tạo và tải nguồn cấp dữ liệu địa điểm yêu thích lên

Khi tạo và tải nguồn cấp dữ liệu địa điểm yêu thích lên, hãy làm theo các hướng dẫn sau:

  • Hãy tuân theo quy cách được mô tả trong nguồn cấp dữ liệu POI cho tệp dữ liệu POI. Bạn nên sử dụng tên tệp dữ liệu POI riêng biệt cho mỗi lần tải lên. Thêm dấu thời gian vào tên tệp, ví dụ: POI_1633621547.json.
  • Tải nguồn cấp dữ liệu lên máy chủ SFTP của địa điểm yêu thích tại địa phương hằng ngày dưới dạng bản làm mới đầy đủ.
  • Bạn có thể xem thông tin chi tiết về máy chủ SFTP trong mục Cấu hình > Nguồn cấp dữ liệu của Partner Portal.

Chọn máy chủ nguồn cấp dữ liệu

  • Xem trạng thái nhập nguồn cấp dữ liệu trong phần Nhập > Nhật ký của Partner Portal.

Quy cách nguồn cấp dữ liệu

Yêu cầu về trường

VssPoi

Đại diện cho một thực thể Địa điểm yêu thích (POI), ví dụ: khách sạn hoặc nhà hàng.

Tên trườngLoạiYêu cầuMô tả
poi_idchuỗi

Bắt buộc

Bắt buộc. Một chuỗi do đối tác tạo ra để xác định một địa điểm yêu thích.
nameobject
(Text)

Bắt buộc

Bắt buộc. Tên của địa điểm yêu thích.
telephonechuỗi

Số điện thoại liên hệ của địa điểm yêu thích, bao gồm cả mã quốc gia và mã vùng, ví dụ: +14567891234.
urlchuỗi

URL của trang web công khai của địa điểm yêu thích. Lưu ý: Thông tin này chỉ được dùng cho mục đích so khớp, chứ không dùng để hiển thị.
locationobject
(GeoCoordinates)

Bắt buộc

Bắt buộc. Vị trí của địa điểm yêu thích.
display_addressobject
(Text)

Địa chỉ xuất hiện trên giao diện người dùng.
imagesmảng object
(Image)

Hình ảnh về POI. Số lượng hình ảnh tối đa: 5.
ratingsố

Điểm xếp hạng trung bình cho địa điểm yêu thích.
num_ratingssố

Số lượng điểm xếp hạng đóng góp cho trường rating.
rating_scalesố

Thang điểm xếp hạng được dùng cho trường rating. Nếu điểm xếp hạng tối đa là 5, thì rating_scale là 5.
categoryenum
(Category)

Bắt buộc

Bắt buộc. Biểu thị danh mục của địa điểm yêu thích.
descriptionobject
(Text)

Nội dung mô tả về địa điểm yêu thích.
oneOf
(additional_data)

Bắt buộc

Bạn chỉ có thể đặt một trong các trường trong oneOf này.

Văn bản

Biểu thị một văn bản có nội dung bản địa hoá.

Tên trườngLoạiYêu cầuMô tả
localizationsmảng object
(LocalizedString)

Các chuỗi được bản địa hoá.
default_localechuỗi

Địa điểm sử dụng làm ngôn ngữ mặc định phải có trong bản bản địa hoá.

LocalizedString

Biểu thị một chuỗi được bản địa hoá.

Tên trườngLoạiYêu cầuMô tả
localechuỗi

Thẻ ngôn ngữ của văn bản, chẳng hạn như "en", "en-US" hoặc "sr-Latn".
textchuỗi

Văn bản theo ngôn ngữ đã chỉ định.

GeoCoordins

Dữ liệu địa lý của một vị trí, bao gồm vĩ độ, kinh độ và địa chỉ.

Tên trườngLoạiYêu cầuMô tả
latitudesố

[-90, +90] độ (bao gồm cả 2 giá trị đó). Bắt buộc nếu bạn đặt kinh độ, nếu không thì bạn nên đặt.
longitudesố

[-180, +180] độ (bao gồm). Bắt buộc nếu bạn đặt vĩ độ, nếu không thì không bắt buộc.
oneOf
(addresses)

Bắt buộc

Bạn chỉ có thể đặt một trong các trường trong oneOf này.

PostalAddress

Địa chỉ bưu chính của vị trí.

Tên trườngLoạiYêu cầuMô tả
countrychuỗi

Bắt buộc

Bắt buộc. Quốc gia, sử dụng mã quốc gia gồm 2 chữ cái theo tiêu chuẩn ISO 3166-1, ví dụ: "US".
localitychuỗi

Bắt buộc

Bắt buộc. Thành phố/địa phương, ví dụ: "Mountain View".
regionchuỗi

Khu vực/tiểu bang/tỉnh, ví dụ: "CA". Bạn chỉ bắt buộc phải điền trường này ở những quốc gia mà khu vực thường là một phần của địa chỉ. (không bắt buộc)
postal_codechuỗi

Bắt buộc

Bắt buộc. Mã bưu chính, ví dụ: "94043".
street_addresschuỗi

Bắt buộc

Bắt buộc. Địa chỉ đường phố, ví dụ: "1600 Amphitheatre Pkwy".

Hình ảnh

Biểu thị hình ảnh của Địa điểm yêu thích (POI).

Tên trườngLoạiYêu cầuMô tả
urlchuỗi

URL của hình ảnh. Google sẽ thu thập dữ liệu nội dung nghe nhìn được lưu trữ tại URL này. Độ dài tối đa: 2.000.
alt_textobject
(Text)

Văn bản thay thế sẽ được dùng cho khả năng hỗ trợ tiếp cận.

HotelData

Dữ liệu nguồn cấp dữ liệu dành riêng cho khách sạn.

Tên trườngLoạiYêu cầuMô tả
hotel_star_classsố

Giá trị sao chính thức của hạng khách sạn. Có thể dùng trong nhãn như "khách sạn 5 sao". Giá trị này phải là một số nguyên từ 1 đến 5.
brand_idsmảng chuỗi

Những thương hiệu có thể hiển thị khách sạn này. Nếu trường này trống, khách sạn có thể xuất hiện trong bất kỳ thương hiệu nào được liên kết với nguồn cấp dữ liệu.

LocalData

Thiết lập dữ liệu cụ thể trong nguồn cấp dữ liệu.

Tên trườngLoạiYêu cầuMô tả
business_hoursobject
(BusinessHours)

Giờ hoạt động thông thường của cơ sở.
price_rangeobject
(PriceRange)

Khoảng giá của các dịch vụ do cơ sở cung cấp.
establishment_categoryobject
(Text)

Loại hình cơ sở.
brand_landing_pagesmảng object
(BrandLandingPages)

Trang đích của thương hiệu.

BusinessHours

Cho biết khoảng thời gian địa điểm này mở cửa kinh doanh. Lưu trữ một tập hợp các thực thể [TimeRange][madden.vss_poi_feed.TimeRange]. Ví dụ: Mở cửa vào thứ Bảy từ 9:00 đến 12:00 và từ 13:00 đến 17:00: time_ranges { open_day: SATURDAY open_time: { hours: 9, minutes: 0 } close_day: SATURDAY close_time: { hours: 12, minutes: 0 } } time_rages { open_day: SATURDAY open_time: { hours: 13, minutes: 0 } close_day: SATURDAY close_time: { hours: 17, minutes: 0 } } Ví dụ: Mở cửa vào thứ Bảy từ 21:00 đến 2:00 Chủ Nhật: time_ranges { open_day: SATURDAY open_time: { hours: 21, minutes: 0 } close_day: SUNDAY close_time: { hours: 2, minutes: 0 } }

Tên trườngLoạiYêu cầuMô tả
time_rangesmảng object
(TimeRange)

Một tập hợp các thời điểm mà địa điểm yêu thích này mở cửa kinh doanh. Mỗi khoảng thời gian đại diện cho một khung giờ mà địa điểm yêu thích mở cửa trong tuần.

TimeRange

Biểu thị khoảng thời gian mà địa điểm yêu thích mở cửa, bắt đầu từ ngày/giờ mở cửa được chỉ định và đóng cửa vào ngày/giờ đóng cửa được chỉ định. Thời gian đóng cửa phải diễn ra sau thời gian mở cửa, ví dụ: vào cuối ngày hoặc vào ngày tiếp theo.

Tên trườngLoạiYêu cầuMô tả
open_dayenum
(DayOfWeek)

Ngày mở cửa trong phạm vi thời gian.
open_timeobject
(TimeOfDay)

Giờ mở cửa của khoảng thời gian.
close_dayenum
(DayOfWeek)

Ngày kết thúc của phạm vi thời gian.
close_timeobject
(TimeOfDay)

Giờ đóng cửa của khoảng thời gian.

TimeOfDay

Tên trườngLoạiYêu cầuMô tả
hourssố

Giờ trong ngày ở định dạng 24 giờ. Phải lớn hơn hoặc bằng 0 và thường phải nhỏ hơn hoặc bằng 23. Một API có thể chọn cho phép giá trị "24:00:00" cho các trường hợp như giờ đóng cửa của doanh nghiệp.
minutessố

Số phút trong một giờ. Phải lớn hơn hoặc bằng 0 và nhỏ hơn hoặc bằng 59.
secondssố

Số giây trong một phút. Phải lớn hơn hoặc bằng 0 và thường phải nhỏ hơn hoặc bằng 59. Một API có thể cho phép giá trị 60 nếu cho phép giây nhuận.
nanossố

Phân số của giây, tính bằng nano giây. Phải lớn hơn hoặc bằng 0 và nhỏ hơn hoặc bằng 999.999.999.

PriceRange

Phạm vi giá của các dịch vụ do địa điểm cung cấp.

Tên trườngLoạiYêu cầuMô tả
min_priceobject
(Money)

Giá tối thiểu của các dịch vụ do địa điểm yêu thích cung cấp.
max_priceobject
(Money)

Giá tối đa của các dịch vụ do địa điểm yêu thích cung cấp.

Tiền

Biểu thị một số tiền cùng với loại đơn vị tiền tệ.

Tên trườngLoạiYêu cầuMô tả
currency_codechuỗi

Mã đơn vị tiền tệ gồm 3 chữ cái được xác định trong ISO 4217.
unitssố

Đơn vị số tiền là số nguyên. Ví dụ: nếu currencyCode"USD", thì 1 đơn vị là 1 đô la Mỹ.
nanossố

Số lượng đơn vị nano (10^-9) của số tiền. Giá trị phải nằm trong khoảng từ -999.999.999 đến +999.999.999 (bao gồm cả hai số này). Nếu units là số dương, thì nanos phải là số dương hoặc 0. Nếu units bằng 0, thì nanos có thể là số dương, số 0 hoặc số âm. Nếu units là số âm, thì nanos phải là số âm hoặc 0. Ví dụ: -1,75 USD được biểu thị là units=-1 và nanos=-750.000.000.

BrandLandingPages

Trang đích thương hiệu được bản địa hoá cho một Địa điểm yêu thích (POI).

Tên trườngLoạiYêu cầuMô tả
brand_idchuỗi

Thương hiệu mà cấu hình này áp dụng.
localized_landing_pagesmảng object
(LocalizedLandingPage)

Trang đích được bản địa hoá. Giá trị của các trường url và locales phải là duy nhất trên tất cả các trang đích được bản địa hoá.
default_urlchuỗi

URL trang đích mặc định sẽ được dùng khi không có trang đích được bản địa hoá nào khớp với ngôn ngữ của người dùng.

LocalizedLandingPage

Trang đích được bản địa hoá cho Địa điểm yêu thích (POI).

Tên trườngLoạiYêu cầuMô tả
urlchuỗi

URL của trang đích. Độ dài tối đa: 2.000.
localesmảng chuỗi

Hạn chế trang này chỉ dành cho những người dùng có lựa chọn ưu tiên về ngôn ngữ được chỉ định. Phải chứa thẻ ngôn ngữ, chẳng hạn như "en", "en-US" hoặc "sr-Latn".

Danh mục

Biểu thị danh mục của địa điểm yêu thích. Trường này phải khớp với trường additional_data oneof bên dưới.

TênMô tả
UNKNOWN_CATEGORY
HOTEL
LOCAL

DayOfWeek

Biểu thị một ngày trong tuần.

TênMô tả
DAY_OF_WEEK_UNSPECIFIEDNgày trong tuần không được chỉ định.
MONDAYThứ Hai
TUESDAYTuesday (thứ Ba)
WEDNESDAYWednesday (thứ Tư)
THURSDAYThursday (thứ Năm)
FRIDAYFriday (thứ Sáu)
SATURDAYSaturday (thứ Bảy)
SUNDAYChủ Nhật

additional_data

Bắt buộc. Các trường theo danh mục. Giá trị này phải khớp với trường category ở trên.

Tên trườngLoạiYêu cầuMô tả
hotel_dataobject
(HotelData)

Không tương thích với local_data

Các trường dành riêng cho khách sạn.
local_dataobject
(LocalData)

Không tương thích với hotel_data

Các trường cụ thể theo địa phương.

địa chỉ

Bắt buộc. Địa chỉ của một vị trí.

Tên trườngLoạiYêu cầuMô tả
addressobject
(PostalAddress)

Địa chỉ bưu chính của vị trí.
  • Định dạng: Phải là JPEG, PNG hoặc WebP.
  • Kích thước tệp tối đa: Dưới 30 MB mỗi hình ảnh.
  • Kích thước tối đa: Tổng kích thước dưới 75 Megapixel (chiều rộng x chiều cao < 75.000.000).
  • Loại URL: Đường dẫn trực tiếp đến thành phần hình ảnh (ví dụ: có đuôi là .jpg).
  • Quyền: Đảm bảo máy chủ lưu trữ cho phép Googlebot hoặc Trình thu thập thông tin truy cập và không có tệp robots.txt chặn các thư mục hình ảnh.

Định nghĩa

Định nghĩa VssPoiFeed

// Represents a Point of Interest (POI) data feed provided by a partner.
export message VssPoiFeed {
  // The POIs in the feed.
  repeated VssPoi data = 1;
}

Định nghĩa VssPoi

// Represents a single Point of Interest (POI) entity e.g. a hotel or
// restaurant.
export message VssPoi {
  // Required. A string generated by the partner that identifies a POI.
  string poi_id = 1;

  // The entity name, telephone, url and location are used to support
  // matching partner inventory with entities already present on Google.

  // Required. The name of the POI.
  Text name = 2;

  // The contact telephone number of the POI including its country and
  // area codes, e.g. +14567891234.
  string telephone = 3 [(datapol.semantic_type) = ST_PHONE_NUMBER];

  // The url of the POI's public website.
  // Note: This will be used just for matching purposes, not for display.
  string url = 4;

  // Required. The location of the POI.
  GeoCoordinates location = 5;

  // The address displayed on the UI.
  Text display_address = 17;

  // Images of the POI.
  // Max number of images: 5.
  repeated Image images = 6;

  // Average rating for the POI.
  float rating = 12;

  // The number of contributing ratings for the `rating` field.
  int64 num_ratings = 13;

  // The rating scale used for the `rating` field. If max rating is 5, then
  // rating_scale is 5.
  int32 rating_scale = 14;

  // Represents the category of the POI.
  // It should match the `additional_data` oneof field below.
  export enum Category {


    LOCAL = 4;
  }

  // Required. Represents the category of the POI.
  Category category = 9;

  // A description of the POI.
  Text description = 16;

  // Required. Category specific fields.
  // It should match the `category` field above.
  oneof additional_data {


    // Local specific fields.
    LocalData local_data = 15;
  }

}

Định nghĩa văn bản

// Represents a text with localizations.
message Text {
  // Represents a localized string.
  message LocalizedString {
    // The text's language tag, such as "en", "en-US" or "sr-Latn".
    string locale = 1;

    // The text in the specified locale.
    string text = 2;
  }

  // The localized strings.
  repeated LocalizedString localizations = 1;

  // The locale to use as the default language it must be present in the
  // localizations.
  string default_locale = 2;
}

Định nghĩa GeoCoordinates

// The Geo data of a location, including latitude, longitude, and address.
message GeoCoordinates {
  option (datapol.msg_semantic_type) = ST_LOCATION;

  // [-90, +90] degrees (inclusive).
  // Required if longitude is set, otherwise nice to have.
  double latitude = 1;

  // [-180, +180] degrees (inclusive).
  // Required if latitude is set, otherwise nice to have.
  double longitude = 2;

  // Required. Address for a location.
  oneof addresses {
    // Postal address of the location.
    PostalAddress address = 3;

  }
}

Định nghĩa PostalAddress

// The postal address for the location.
message PostalAddress {
  option (datapol.msg_semantic_type) = ST_LOCATION;

  // Required. The country, using ISO 3166-1 alpha-2 country code, e.g. "US".
  string country = 1;

  // Required. The locality/city, e.g. "Mountain View".
  string locality = 2;

  // The region/state/province, e.g. "CA". This field is only required in
  // countries where region is commonly a part of the address. (optional)
  string region = 3;

  // Required. The postal code, e.g. "94043".
  string postal_code = 4;

  // Required. The street address, e.g. "1600 Amphitheatre Pkwy".
  string street_address = 5;
}

Định nghĩa về hình ảnh

// Represents an image of the Point of Interest (POI).
export message Image {
  // The url of the image. Google will crawl the media hosted at this URL.
  // Max length: 2000.
  string url = 1;

  // The alternative text to be used for accessibility.
  Text alt_text = 2;
}

Định nghĩa LocalData

// Establishment specific feed data.
message LocalData {
  // The regular business hours of the establishment.
  BusinessHours business_hours = 1;

  // Price range of the services offered by the establishment.
  PriceRange price_range = 2;

  // The type of establishment.
  Text establishment_category = 3;

  // The brand landing pages.
  repeated BrandLandingPages brand_landing_pages = 4;
}

Định nghĩa về BrandLandingPages

// The Localized brand landing pages for a single Point of Interest (POI).
message BrandLandingPages {
  // The brand this configuration applies to.
  string brand_id = 1 [(datapol.semantic_type) = ST_PARTNER_ID];

  // Localized landing page for the Point of Interest (POI).
  message LocalizedLandingPage {

    // The url of the landing page.
    // Max length: 2000.
    string url = 1;

    // Restricts this page to users with the specified language preference.
    // Must contain language tags, such as "en", "en-US" or "sr-Latn".
    repeated string locales = 3;
  }

  // The localized landing pages.
  // The url and locales fields values must be unique across all the localized
  // landing pages.
  repeated LocalizedLandingPage localized_landing_pages = 2;

  // The default landing page url to be used when none of the localized
  // landing pages matches the user's language.
  string default_url = 3;
}

Mẫu

Nguồn cấp dữ liệu địa điểm yêu thích

Tên tệp: poi_1707240000.json

{
  "data": [
    {
      "poi_id": "test_restaurant_1",
      "name": {
        "localizations": [
          {
            "locale": "en",
            "text": "Tasty Bites Test Restaurant"
          }
        ],
        "default_locale": "en"
      },
      "telephone": "+1234567890",
      "url": "https://www.tastybitestest.com",
      "location": {
        "latitude": 37.422,
        "longitude": -122.084,
        "address": {
          "country": "US",
          "locality": "Mountain View",
          "postal_code": "94043",
          "street_address": "1600 Amphitheatre Pkwy"
        }
      },
      "display_address": {
        "localizations": [
          {
            "locale": "en",
            "text": "1600 Amphitheatre Pkwy, Mountain View, CA 94043"
          }
        ],
        "default_locale": "en"
      },
      "images": [
        {
          "url": "https://www.tastybitestest.com/images/interior.jpg",
          "alt_text": {
            "localizations": [
              {
                "locale": "en",
                "text": "Cozy dining area of Tasty Bites"
              }
            ],
            "default_locale": "en"
          }
        }
      ],
      "rating": 4.7,
      "num_ratings": 150,
      "rating_scale": 5,
      "category": "LOCAL",
      "description": {
        "localizations": [
          {
            "locale": "en",
            "text": "A mock restaurant for testing the POI feed ingestion."
          }
        ],
        "default_locale": "en"
      },
      "local_data": {
        "establishment_category": {
           "localizations": [
             {
               "locale": "en",
               "text": "Restaurant"
             }
           ],
           "default_locale": "en"
        },
        "price_range": {
          "min_price": {
            "currency_code": "USD",
            "units": 15,
            "nanos": 0
          },
          "max_price": {
            "currency_code": "USD",
            "units": 45,
            "nanos": 0
          }
        },
        "business_hours": {
          "time_ranges": [
            {
              "open_day": "MONDAY",
              "open_time": { "hours": 11, "minutes": 0 },
              "close_day": "MONDAY",
              "close_time": { "hours": 21, "minutes": 0 }
            },
            {
              "open_day": "TUESDAY",
              "open_time": { "hours": 11, "minutes": 0 },
              "close_day": "TUESDAY",
              "close_time": { "hours": 21, "minutes": 0 }
            },
            {
              "open_day": "WEDNESDAY",
              "open_time": { "hours": 11, "minutes": 0 },
              "close_day": "WEDNESDAY",
              "close_time": { "hours": 21, "minutes": 0 }
            },
            {
              "open_day": "THURSDAY",
              "open_time": { "hours": 11, "minutes": 0 },
              "close_day": "THURSDAY",
              "close_time": { "hours": 22, "minutes": 0 }
            },
            {
              "open_day": "FRIDAY",
              "open_time": { "hours": 11, "minutes": 0 },
              "close_day": "FRIDAY",
              "close_time": { "hours": 23, "minutes": 0 }
            },
            {
              "open_day": "SATURDAY",
              "open_time": { "hours": 10, "minutes": 0 },
              "close_day": "SATURDAY",
              "close_time": { "hours": 23, "minutes": 0 }
            },
            {
              "open_day": "SUNDAY",
              "open_time": { "hours": 10, "minutes": 0 },
              "close_day": "SUNDAY",
              "close_time": { "hours": 20, "minutes": 0 }
            }
          ]
        },
        "brand_landing_pages": [
          {
            "brand_id": "tasty_bites_brand",
            "localized_landing_pages": [
              {
                "url": "https://www.tastybitestest.com/en",
                "locales": ["en-US", "en-GB"]
              }
            ],
            "default_url": "https://www.tastybitestest.com"
          },
          {
            "brand_id": "delicious_eats_brand",
            "localized_landing_pages": [
              {
                "url": "https://www.deliciouseats.com/en",
                "locales": ["en-US", "en-GB"]
              }
            ],
            "default_url": "https://www.deliciouseats.com"
          }
        ]
      }
    }
  ]
}

Nguồn cấp dữ liệu địa điểm yêu thích đa ngôn ngữ

Tên tệp: poi_multilingual.json

{
  "data": [
    {
      "poi_id": "test_restaurant_1",
      "name": {
        "localizations": [
          {
            "locale": "en",
            "text": "Tasty Bites Test Restaurant"
          },
          {
            "locale": "fr",
            "text": "Restaurant de test Tasty Bites"
          }
        ],
        "default_locale": "en"
      },
      "telephone": "+1234567890",
      "url": "https://www.tastybitestest.com",
      "location": {
        "latitude": 37.422,
        "longitude": -122.084,
        "address": {
          "country": "US",
          "locality": "Mountain View",
          "postal_code": "94043",
          "street_address": "1600 Amphitheatre Pkwy"
        }
      },
      "display_address": {
        "localizations": [
          {
            "locale": "en",
            "text": "1600 Amphitheatre Pkwy, Mountain View, CA 94043"
          },
          {
            "locale": "fr",
            "text": "1600 Amphitheatre Pkwy, Mountain View, CA 94043"
          }
        ],
        "default_locale": "en"
      },
      "images": [
        {
          "url": "https://www.tastybitestest.com/images/interior.jpg",
          "alt_text": {
            "localizations": [
              {
                "locale": "en",
                "text": "Cozy dining area of Tasty Bites"
              },
              {
                "locale": "fr",
                "text": "Espace salle à manger accueillant de Tasty Bites"
              }
            ],
            "default_locale": "en"
          }
        }
      ],
      "rating": 4.7,
      "num_ratings": 150,
      "rating_scale": 5,
      "category": "LOCAL",
      "description": {
        "localizations": [
          {
            "locale": "en",
            "text": "A mock restaurant for testing the POI feed ingestion."
          },
          {
            "locale": "fr",
            "text": "Un faux restaurant pour tester l'ingestion de flux de points d'intérêt."
          }
        ],
        "default_locale": "en"
      },
      "local_data": {
        "establishment_category": {
           "localizations": [
             {
               "locale": "en",
               "text": "Restaurant"
             },
             {
               "locale": "fr",
               "text": "Restaurant"
             }
           ],
           "default_locale": "en"
        },
        "price_range": {
          "min_price": {
            "currency_code": "USD",
            "units": 15,
            "nanos": 0
          },
          "max_price": {
            "currency_code": "USD",
            "units": 45,
            "nanos": 0
          }
        },
        "business_hours": {
          "time_ranges": [
            {
              "open_day": "MONDAY",
              "open_time": { "hours": 11, "minutes": 0 },
              "close_day": "MONDAY",
              "close_time": { "hours": 21, "minutes": 0 }
            },
            {
              "open_day": "TUESDAY",
              "open_time": { "hours": 11, "minutes": 0 },
              "close_day": "TUESDAY",
              "close_time": { "hours": 21, "minutes": 0 }
            },
            {
              "open_day": "WEDNESDAY",
              "open_time": { "hours": 11, "minutes": 0 },
              "close_day": "WEDNESDAY",
              "close_time": { "hours": 21, "minutes": 0 }
            },
            {
              "open_day": "THURSDAY",
              "open_time": { "hours": 11, "minutes": 0 },
              "close_day": "THURSDAY",
              "close_time": { "hours": 22, "minutes": 0 }
            },
            {
              "open_day": "FRIDAY",
              "open_time": { "hours": 11, "minutes": 0 },
              "close_day": "FRIDAY",
              "close_time": { "hours": 23, "minutes": 0 }
            },
            {
              "open_day": "SATURDAY",
              "open_time": { "hours": 10, "minutes": 0 },
              "close_day": "SATURDAY",
              "close_time": { "hours": 23, "minutes": 0 }
            },
            {
              "open_day": "SUNDAY",
              "open_time": { "hours": 10, "minutes": 0 },
              "close_day": "SUNDAY",
              "close_time": { "hours": 20, "minutes": 0 }
            }
          ]
        },
        "brand_landing_pages": [
          {
            "brand_id": "tasty_bites_brand",
            "localized_landing_pages": [
              {
                "url": "https://www.tastybitestest.com/fr",
                "locales": ["fr-FR", "fr-CA"]
              },
              {
                "url": "https://www.tastybitestest.com/en",
                "locales": ["en-US", "en-GB"]
              }
            ],
            "default_url": "https://www.tastybitestest.com"
          },
          {
            "brand_id": "delicious_eats_brand",
            "localized_landing_pages": [
              {
                "url": "https://www.deliciouseats.com/fr",
                "locales": ["fr-FR", "fr-CA"]
              },
              {
                "url": "https://www.deliciouseats.com/en",
                "locales": ["en-US", "en-GB"]
              }
            ],
            "default_url": "https://www.deliciouseats.com"
          }
        ]
      }
    }
  ]
}