إنشاء خلاصات نقاط الاهتمام وتحميلها
عند إنشاء خلاصات نقاط الاهتمام وتحميلها، اتّبِع التعليمات التالية:
- اتّبِع المواصفات الموضّحة في خلاصة نقاط الاهتمام
لملفات بيانات نقاط الاهتمام. ننصحك باستخدام أسماء ملفات فريدة لبيانات نقاط الاهتمام في كل عملية تحميل. أدرِج طابعًا زمنيًا في اسم الملف، مثل
POI_1633621547.json. - حمِّل الخلاصات إلى خادم بروتوكول النقل الآمن للملفات (SFTP) الخاص بنقاط الاهتمام المحلية يوميًا كتحديثات كاملة.
- يمكنك العثور على تفاصيل خادم SFTP في قسم الإعدادات > الخلاصات في "بوابة الشريك".
- يمكنك الاطّلاع على حالة عرض الخلاصة في قسم العرض > السجلّ في "بوابة الشريك".
مواصفات الخلاصة
متطلبات الحقول
VssPoi
تمثّل هذه السمة كيانًا واحدًا لنقطة اهتمام، مثل فندق أو مطعم.
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
poi_id | سلسلة | مطلوب | الحقل مطلوب. سلسلة من إنشاء الشريك تحدّد نقطة اهتمام. |
name | الكائن(Text) | مطلوب | الحقل مطلوب. تمثّل هذه السمة اسم نقطة الاهتمام. |
telephone | سلسلة | رقم الهاتف الخاص بنقطة الاهتمام، بما في ذلك رمز البلد ورمز المنطقة، مثلاً +14567891234 | |
url | سلسلة | تمثّل هذه السمة عنوان URL للموقع الإلكتروني العلني الخاص بنقطة الاهتمام. ملاحظة: سيتم استخدام هذا المعرّف لأغراض المطابقة فقط، وليس للعرض. | |
location | الكائن(GeoCoordinates) | مطلوب | الحقل مطلوب. تمثّل هذه السمة الموقع الجغرافي لنقطة الاهتمام. |
display_address | الكائن(Text) | العنوان المعروض على واجهة المستخدم | |
images | مصفوفة من عناصر(Image) | صور لنقطة الاهتمام الحدّ الأقصى لعدد الصور: 5 | |
rating | الرقم | تمثّل هذه السمة متوسط التقييم الخاص بنقطة الاهتمام. | |
num_ratings | الرقم | تمثّل هذه السمة عدد التقييمات المساهمة في حقل rating. | |
rating_scale | الرقم | مقياس التقييم المستخدَم للحقل rating. إذا كان الحد الأقصى للتقييم هو 5، ستكون قيمة rating_scale هي 5. | |
category | enum(Category) | مطلوب | الحقل مطلوب. تمثّل هذه السمة فئة نقطة الاهتمام. |
description | الكائن(Text) | تمثّل هذه السمة وصفًا لنقطة الاهتمام. | |
| oneOf(additional_data) | مطلوب | لا يمكن ضبط سوى حقل واحد من الحقول في هذا oneOf. |
نص
تمثّل هذه السمة نصًا مع ترجمات.
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
localizations | مصفوفة من عناصر(LocalizedString) | السلاسل المعدَّلة بما يناسب السوق المحلية | |
default_locale | سلسلة | يجب أن تكون اللغة المحلية المستخدَمة كلغة تلقائية متوفّرة في عمليات الترجمة. |
LocalizedString
تمثّل هذه السمة سلسلة معدَّلة بما يناسب السوق المحلية.
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
locale | سلسلة | علامة لغة النص، مثل "en" أو "en-US" أو "sr-Latn". | |
text | سلسلة | النص باللغة المحدّدة. |
GeoCoordinates
بيانات الموقع الجغرافي، بما في ذلك خطوط الطول والعرض والعنوان
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
latitude | الرقم | درجات تتراوح بين -90 و+90 (بما في ذلك هذين الرقمين) هذه السمة مطلوبة إذا تم ضبط خط الطول، وإلا فهي اختيارية. | |
longitude | الرقم | درجات تتراوح بين -180 و+180 (شاملة). هذه السمة مطلوبة إذا تم ضبط خط العرض، وإلا فهي اختيارية. | |
| oneOf(addresses) | مطلوب | لا يمكن ضبط سوى حقل واحد من الحقول في هذا oneOf. |
PostalAddress
تمثّل هذه السمة العنوان البريدي للموقع الجغرافي.
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
country | سلسلة | مطلوب | الحقل مطلوب. تمثّل هذه السمة البلد باستخدام رمز البلد ISO 3166-1 alpha-2، مثلاً "US". |
locality | سلسلة | مطلوب | الحقل مطلوب. المنطقة أو المدينة، مثل "ماونتن فيو" |
region | سلسلة | المنطقة أو الولاية أو المقاطعة، مثل "CA" هذا الحقل مطلوب فقط في البلدان التي تشكّل فيها المنطقة جزءًا من العنوان. (اختياري) | |
postal_code | سلسلة | مطلوب | الحقل مطلوب. الرمز البريدي، مثل "94043" |
street_address | سلسلة | مطلوب | الحقل مطلوب. عنوان الشارع، مثل "1600 Amphitheatre Pkwy" |
صورة
تمثّل هذه السمة صورة لنقطة الاهتمام.
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
url | سلسلة | تمثّل هذه السمة عنوان URL الخاص بالصورة. سيزحف محرّك بحث Google إلى الوسائط المستضافة على عنوان URL هذا. الحد الأقصى: 2000 حرف | |
alt_text | الكائن(Text) | النص البديل الذي سيتم استخدامه لتسهيل الاستخدام. |
HotelData
بيانات الخلاصة الخاصة بالفنادق
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
hotel_star_class | الرقم | قيمة النجوم الرسمية لفئة الفندق. يمكن استخدامها في تصنيف مثل "فندق 5 نجوم". يجب أن تكون هذه القيمة عددًا صحيحًا بين 1 و5. | |
brand_ids | مصفوفة من السلاسل | العلامات التجارية التي يمكنها عرض هذا الفندق إذا كان هذا الحقل فارغًا، يمكن عرض الفندق ضمن أي من العلامات التجارية المرتبطة بالخلاصة. |
LocalData
بيانات الخلاصة الخاصة بالمؤسسة
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
business_hours | الكائن(BusinessHours) | تمثّل ساعات العمل العادية للمؤسسة. | |
price_range | الكائن(PriceRange) | نطاق أسعار الخدمات التي يقدّمها المكان | |
establishment_category | الكائن(Text) | تمثّل هذه السمة نوع المؤسسة. | |
brand_landing_pages | مصفوفة من عناصر(BrandLandingPages) | الصفحات المقصودة الخاصة بالعلامة التجارية |
BusinessHours
تمثّل هذه السمة الفترات الزمنية التي يكون فيها هذا الموقع الجغرافي مفتوحًا لمزاولة النشاط التجاري. تحتوي على مجموعة من مثيلات [TimeRange][madden.vss_poi_feed.TimeRange] مثال: يفتح أيام السبت من الساعة 9:00 إلى الساعة 12:00 ومن الساعة 13:00 إلى الساعة 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 } } مثال: يفتح أيام السبت من الساعة 21:00 إلى الساعة 2:00 من صباح الأحد: time_ranges { open_day: SATURDAY open_time: { hours: 21, minutes: 0 } close_day: SUNDAY close_time: { hours: 2, minutes: 0 } }
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
time_ranges | مصفوفة من عناصر(TimeRange) | مجموعة من الأوقات التي يكون فيها هذا المكان مفتوحًا لمزاولة النشاط التجاري. تمثّل كل فترة نطاقًا زمنيًا تكون فيه نقطة الاهتمام مفتوحة خلال الأسبوع. |
TimeRange
تمثّل هذه السمة فترة زمنية تكون فيها نقطة الاهتمام مفتوحة، بدءًا من يوم/وقت الافتتاح المحدّدَين وانتهاءً بيوم/وقت الإغلاق المحدّدَين. يجب أن يكون وقت الإغلاق بعد وقت الافتتاح، مثلاً في وقت لاحق من اليوم نفسه أو في يوم لاحق.
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
open_day | enum(DayOfWeek) | تمثّل هذه السمة يوم بدء النطاق الزمني. | |
open_time | الكائن(TimeOfDay) | وقت بدء النطاق الزمني | |
close_day | enum(DayOfWeek) | يوم إغلاق النطاق الزمني. | |
close_time | الكائن(TimeOfDay) | وقت إغلاق النطاق الزمني |
TimeOfDay
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
hours | الرقم | ساعات اليوم بتنسيق 24 ساعة يجب أن تكون القيمة أكبر من أو تساوي 0 وأقل من أو تساوي 23 عادةً. يمكن لواجهة برمجة التطبيقات اختيار السماح بالقيمة "24:00:00" في سيناريوهات مثل وقت إغلاق النشاط التجاري. | |
minutes | الرقم | دقائق الساعة يجب أن تكون القيمة أكبر من أو تساوي 0 وأقل من أو تساوي 59. | |
seconds | الرقم | ثواني الدقيقة يجب أن تكون القيمة أكبر من أو تساوي 0، ويجب أن تكون عادةً أقل من أو تساوي 59. قد يسمح أحد واجهات برمجة التطبيقات بالقيمة 60 إذا كان يسمح بالثواني الكبيسة. | |
nanos | الرقم | أجزاء من الثانية بالنانو ثانية يجب أن تكون القيمة أكبر من أو تساوي 0 وأقل من أو تساوي 999,999,999. |
PriceRange
نطاق أسعار الخدمات التي يقدّمها موضع الاهتمام
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
min_price | الكائن(Money) | تمثّل هذه السمة الحدّ الأدنى لسعر الخدمات التي يقدّمها المكان. | |
max_price | الكائن(Money) | تمثّل هذه السمة الحد الأقصى لسعر الخدمات التي يقدّمها المكان. |
المال
تمثّل هذه السمة مبلغًا من المال مع نوع العملة.
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
currency_code | سلسلة | تمثّل هذه السمة رمز العملة المكوّن من ثلاثة أحرف والمحدّد في معيار ISO 4217. | |
units | الرقم | تمثّل هذه السمة الوحدات الكاملة للمبلغ.
على سبيل المثال، إذا كانت قيمة currencyCode هي "USD"، تكون الوحدة الواحدة هي دولار أمريكي واحد. | |
nanos | الرقم | عدد وحدات النانو (10^-9) من المبلغ.
يجب أن تتراوح القيمة بين -999,999,999 و+999,999,999 (بما يشمل هذين الرقمَين).
إذا كانت قيمة units موجبة، يجب أن تكون قيمة nanos موجبة أو صفرًا.
إذا كانت قيمة units صفرًا، يمكن أن تكون قيمة nanos موجبة أو صفرًا أو سالبة.
إذا كانت قيمة units سالبة، يجب أن تكون قيمة nanos سالبة أو صفرًا.
على سبيل المثال، يتم تمثيل القيمة $-1.75 على النحو التالي: units=-1 وnanos=-750,000,000. |
BrandLandingPages
الصفحات المقصودة الخاصة بالعلامة التجارية والمترجمة إلى لغات مختلفة لنقطة اهتمام واحدة
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
brand_id | سلسلة | العلامة التجارية التي ينطبق عليها هذا الإعداد | |
localized_landing_pages | مصفوفة من عناصر(LocalizedLandingPage) | الصفحات المقصودة المتوافقة مع اللغة المحلية يجب أن تكون قيم الحقلَين url وlocales فريدة في جميع الصفحات المقصودة المترجمة. | |
default_url | سلسلة | عنوان URL التلقائي للصفحة المقصودة الذي سيتم استخدامه عندما لا تتطابق أي من الصفحات المقصودة المترجَمة مع لغة المستخدم. |
LocalizedLandingPage
صفحة مقصودة مترجَمة لنقطة الاهتمام
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
url | سلسلة | تمثّل هذه السمة عنوان URL الخاص بالصفحة المقصودة. الحد الأقصى: 2000 حرف | |
locales | مصفوفة من السلاسل | يقتصر الوصول إلى هذه الصفحة على المستخدمين الذين ضبطوا اللغة المفضّلة المحدّدة. يجب أن تحتوي على علامات اللغة، مثل "ar" أو "ar-SA" أو "sr-Latn". |
الفئة
تمثّل هذه السمة فئة نقطة الاهتمام.
يجب أن يتطابق مع حقل additional_data oneof أدناه.
| الاسم | الوصف |
|---|---|
UNKNOWN_CATEGORY | |
HOTEL | |
LOCAL |
DayOfWeek
تمثّل هذه السمة يومًا من أيام الأسبوع.
| الاسم | الوصف |
|---|---|
DAY_OF_WEEK_UNSPECIFIED | لم يتم تحديد يوم الأسبوع. |
MONDAY | الاثنين |
TUESDAY | الثلاثاء |
WEDNESDAY | الأربعاء |
THURSDAY | الخميس |
FRIDAY | الجمعة |
SATURDAY | السبت |
SUNDAY | الأحد |
additional_data
الحقل مطلوب. الحقول الخاصة بفئة معيّنة
يجب أن يتطابق مع الحقل category أعلاه.
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
hotel_data | الكائن(HotelData) | لا يمكن استخدامها مع | حقول خاصة بالفندق |
local_data | الكائن(LocalData) | لا يمكن استخدامها مع | الحقول الخاصة بالمنطقة المحلية |
عناوين
الحقل مطلوب. عنوان موقع جغرافي
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
address | الكائن(PostalAddress) | تمثّل هذه السمة العنوان البريدي للموقع الجغرافي. |
- التنسيق: يجب أن يكون JPEG أو PNG أو WebP.
- الحدّ الأقصى لحجم الملف: أقل من 30 ميغابايت لكل صورة
- الحد الأقصى للأبعاد: أقل من 75 ميغابكسل إجمالاً (العرض × الارتفاع < 75,000,000)
- نوع عنوان URL: مسار مباشر إلى مادة عرض الصورة (مثلاً، ينتهي بـ .jpg).
- الأذونات: تأكَّد من أنّ خادم الاستضافة يسمح لبرنامج Googlebot أو برامج الزحف بالوصول إلى المحتوى، ومن أنّه لا يتضمّن ملف robots.txt يحظر الوصول إلى أدلة الصور.
التعريفات
VssPoiFeed Definition
// Represents a Point of Interest (POI) data feed provided by a partner. export message VssPoiFeed { // The POIs in the feed. repeated VssPoi data = 1; }
VssPoi Definition
// 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; } }
تعريف النص
// 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; }
تعريف 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; } }
تعريف 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; }
تعريف الصورة
// 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; }
تعريف 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; }
تعريف 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; }
نماذج
خلاصة نقاط الاهتمام
اسم الملف: 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" } ] } } ] }
خلاصة نقاط الاهتمام المتعدّدة اللغات
اسم الملف: 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" } ] } } ] }