إنشاء خلاصات نقاط الاهتمام وتحميلها
عند إنشاء خلاصات نقاط الاهتمام وتحميلها، اتّبِع التعليمات التالية:
- اتّبِع المواصفات الموضّحة في خلاصة نقاط الاهتمام
لملفات بيانات نقاط الاهتمام. ننصح باستخدام أسماء ملفات بيانات نقاط الاهتمام الفريدة لكل عملية تحميل. أدرِج طابعًا زمنيًا في اسم الملف، على سبيل المثال،
POI_1633621547.json. - يجب تحميل الخلاصات إلى خادم بروتوكول النقل الآمن للملفات (SFTP) الخاص بنقاط الاهتمام المحلية يوميًا كعمليات إعادة تحميل كاملة.
- يمكنك العثور على تفاصيل خادم SFTP في قسم الإعدادات > الخلاصات في "بوابة الشركاء".
- يمكنك الاطّلاع على حالة عرض الخلاصة في قسم العرض > السجلّ في "بوابة الشريك".
إرشادات إنشاء حزمة للملفات
لضمان نجاح عملية الاستيراد، يجب الالتزام بمتطلبات التجميع التالية:
- أرشيف JSON مجمّع واحد (مطلوب): ادمِج جميع سجلات الكيانات في ملف JSON واحد. ننصحك بضغطه في أرشيف GZIP واحد وتحميله.
- تحذير بشأن النمط المضاد: لا تستخدِم ملفًا واحدًا لكل جهة أو ملفات متعددة مفصولة حسب البلد في الأرشيف نفسه. هذه الطريقة غير متاحة وستؤدي إلى حدوث أخطاء في الاستخراج.
دعم لغات متعددة
تتيح خلاصة "نقطة الاهتمام" تقديم محتوى مترجَم لحقول معيّنة. الحقول التالية من النوع Text وتتيح إمكانية الترجمة:
namedescriptiondisplay_address
لتقديم محتوى بلغات متعدّدة، يجب تحديد default_locale في الحقل وتقديم السلاسل المترجَمة في قائمة localizations.
يجب تقديم جميع الترجمات لكيان معيّن في إدخال واحد لنقطة الاهتمام. لا تقسّم كيانًا واحدًا بين ملفات JSON متعددة اللغات.
مثال:
"name": {
"localizations": [
{
"locale": "en",
"text": "Tasty Bites Test Restaurant"
},
{
"locale": "es",
"text": "Restaurante de prueba Tasty Bites"
}
],
"default_locale": "en"
}
إرشادات الصور
- التنسيق: يجب أن يكون JPEG أو PNG أو WebP.
- الحدّ الأقصى لحجم الملف: أقل من 30 ميغابايت لكل صورة
- الحد الأقصى للأبعاد: أقل من 75 ميغابكسل إجمالاً (العرض × الارتفاع < 75,000,000).
- نوع عنوان URL: مسار مباشر إلى مادة عرض الصورة (مثلاً، ينتهي بـ .jpg).
- الأذونات: تأكَّد من أنّ خادم الاستضافة يسمح لبرنامج Googlebot أو برامج الزحف بالوصول إلى أدلة الصور ومن أنّه لا يتضمّن ملف robots.txt يحظر هذه الأدلة.
- البحث الآمن: يجب أن تتوافق الصور مع سياسات البحث الآمن في Google.
مواصفات الخلاصة
متطلبات الحقول
VssPoi
تمثّل هذه السمة كيانًا واحدًا لنقطة اهتمام، مثل فندق أو مطعم.
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
poi_id | سلسلة | مطلوب | الحقل مطلوب. سلسلة ينشئها الشريك لتحديد نقطة اهتمام |
name | object(Text) | مطلوب | الحقل مطلوب. اسم نقطة الاهتمام |
telephone | سلسلة | رقم هاتف جهة الاتصال لنقطة الاهتمام، بما في ذلك رمز البلد ورمز المنطقة، مثل +14567891234 | |
url | سلسلة | عنوان URL للموقع الإلكتروني العلني الخاص بنقطة الاهتمام ملاحظة: سيتم استخدام هذه المعلومات لأغراض المطابقة فقط، ولن يتم عرضها. | |
location | object(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) | مطلوب | يمكن ضبط حقل واحد فقط من الحقول في هذا الحقل. |
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 | object(Text) | النص البديل الذي سيتم استخدامه لتسهيل الاستخدام. |
HotelData
بيانات الخلاصة الخاصة بالفندق
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
hotel_star_class | الرقم | قيمة النجوم الرسمية لفئة الفندق يمكن استخدامها في تصنيف مثل "فندق 5 نجوم". من المتوقّع أن تكون هذه القيمة عددًا صحيحًا بين 0 و5. يجب استخدام التقييم 0 في حال عدم توفّر تقييم أو عدم تحديده. عند ضبط القيمة على 0، لن يتم عرض أي فئة نجوم للمستخدمين في واجهة المستخدم. | |
brand_ids | مصفوفة السلاسل النصية | العلامات التجارية التي يمكنها عرض هذا الفندق إذا كان هذا الحقل فارغًا، يمكن عرض الفندق ضمن أيّ من العلامات التجارية المرتبطة بالخلاصة. |
LocalData
بيانات الخلاصة الخاصة بالمؤسسة
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
business_hours | object(BusinessHours) | تمثّل هذه السمة ساعات العمل العادية للمؤسسة. | |
price_range | object(PriceRange) | نطاق أسعار الخدمات التي تقدّمها المؤسسة | |
establishment_category | الكائن(Text) | نوع المؤسسة | |
brand_landing_pages | مصفوفة من العناصر(BrandLandingPages) | مطلوب | الحقل مطلوب. الصفحات المقصودة للعلامة التجارية يجب توفير قيمة واحدة على الأقل. |
BusinessHours
تمثّل هذه السمة الفترات الزمنية التي يكون فيها هذا الموقع الجغرافي مفتوحًا للنشاط التجاري. يحتوي على مجموعة من نُسخ [TimeRange][madden.vss_poi_feed.TimeRange]. مثال: يفتح المكان أيام السبت من الساعة 9:00 صباحًا حتى الساعة 12:00 ظهرًا ومن الساعة 1:00 ظهرًا حتى الساعة 5: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 } } مثال: يفتح المكان أيام السبت من الساعة 9: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 | object(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
الصفحة المقصودة المترجَمة لنقطة الاهتمام (POI)
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
url | سلسلة | عنوان URL للصفحة المقصودة الحدّ الأقصى للطول: 2000 حرف. | |
locales | مصفوفة السلاسل النصية | يقتصر الوصول إلى هذه الصفحة على المستخدمين الذين ضبطوا اللغة المفضّلة المحدّدة. يجب أن يحتوي على علامات لغة، مثل "en" أو "en-US" أو "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 | object(HotelData) | لا يمكن استخدامها مع | حقول خاصة بالفندق |
local_data | object(LocalData) | لا يمكن استخدامها مع | الحقول الخاصة بالمنتجات المحلية |
عناوين
الحقل مطلوب. عنوان لموقع جغرافي
| اسم الحقل | النوع | المتطلبات | الوصف |
|---|---|---|---|
address | الكائن(PostalAddress) | العنوان البريدي للموقع الجغرافي |
التعريفات
تعريف 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; }
تعريف 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; } }
تعريف النص
// 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; // Required. The brand landing pages. At least one must be provided. repeated BrandLandingPages brand_landing_pages = 4; }
تعريف BrandLandingPages
// The Localized brand landing pages for a single Point of Interest (POI). message BrandLandingPages { // Required. 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; // Required. 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" } ] } } ] }
خلاصة نقاط الاهتمام المتعددة اللغات
اسم الملف: 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" } ] } } ] }