فید «نقطه موردعلاقه» (POI)

ایجاد و بارگذاری فیدهای نقطه موردعلاقه

هنگام ایجاد و بارگذاری فیدهای «نقطه موردعلاقه»، این دستورالعمل‌ها را دنبال کنید:

  • برای فایل‌های داده نقطه موردعلاقه، از مشخصات شرح‌داده‌شده در فید نقطه موردعلاقه پیروی کنید. توصیه می‌کنیم برای هر بارگذاری از نام فایل داده‌های POI غیرتکراری استفاده کنید. مُهر زمان را در نام فایل بگنجانید، برای مثال، POI_1633621547.json.
  • فیدها را روزانه به‌صورت بازآوری کامل در سرور SFTP نقطه موردعلاقه محلی بارگذاری کنید.
  • جزئیات سرور SFTP را می‌توانید در بخش پیکربندی > فیدها در «پورتال شریک» پیدا کنید.

انتخاب سرورهای فید

دستورالعمل‌های بسته‌بندی فایل

برای اطمینان از موفقیت‌آمیز بودن جذب، الزامات بسته‌بندی زیر را رعایت کنید:

  • بایگانی JSON تجمیعی تکی (الزامی): همه گزارش‌های نهاد را در یک فایل JSON تکی ترکیب کنید. توصیه می‌کنیم آن را در یک بایگانی GZIP فشرده کنید و سپس بارگذاری کنید.
  • هشدار ضدالگو: از یک فایل برای هر نهاد یا چند فایل جداشده براساس کشور در یک بایگانی استفاده نکنید. این رویکرد پشتیبانی نمی‌شود و باعث ناموفق بودن استخراج می‌شود.

پشتیبانی چندزبانه

فید «مکان جالب» از ارائه محتوای بومی‌سازی‌شده برای فیلدهای خاص پشتیبانی می‌کند. فیلدهای زیر از نوع Text هستند و از بومی‌سازی پشتیبانی می‌کنند:

  • name
  • description
  • display_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 باشد.
  • حداکثر اندازه فایل: کمتر از ۳۰ مگابایت برای هر تصویر.
  • حداکثر ابعاد: مجموع کمتر از ۷۵ مگاپیکسل (عرض × ارتفاع < ۷۵٬۰۰۰٬۰۰۰).
  • نوع نشانی وب: مسیر مستقیم به دارایی تصویری (مثلاً به jpg. ختم می‌شود).
  • اجازه‌ها: مطمئن شوید که سرور میزبان به Googlebot یا «خزنده‌ها» اجازه دسترسی می‌دهد و هیچ robots.txt وجود ندارد که دایرکتوری‌های تصویر را مسدود کند.
  • جستجوی ایمن: تصاویر باید با خط‌مشی‌های جستجوی ایمن Google مطابقت داشته باشند.

مشخصات فید

الزامات فیلد

VssPoi

نشان‌دهنده یک نهاد «نقطه موردعلاقه» (POI) است، مثلاً هتل یا رستوران.

نام فیلدنوعالزامشرح
poi_idرشته

الزامی

الزامی. رشته‌ای که توسط شریک تولید شده است و نقطه موردعلاقه را شناسایی می‌کند.
nameشیء
(Text)

الزامی

الزامی. نام نقطه موردعلاقه.
telephoneرشته

شماره تلفن تماس نقطه موردعلاقه، ازجمله کد کشور و پیش‌شماره شهری آن، برای نمونه ‎+۱۴۵۶۷۸۹۱۲۳۴.
urlرشته

نشانی وب وب‌سایت عمومی نقطه موردعلاقه. توجه: این فقط برای اهداف مطابقت استفاده می‌شود، نه برای نمایش.
locationشیء
(GeoCoordinates)

الزامی

الزامی. مکان «نقطه موردعلاقه».
display_addressشیء
(Text)

نشانی نمایش‌داده‌شده در واسط کاربر.
imagesآرایه شیء
(Image)

تصاویر نقطه موردعلاقه. حداکثر تعداد تصویر: ۵.
ratingشماره

رده‌بندی میانگین برای نقطه موردعلاقه.
num_ratingsشماره

تعداد رده‌بندی‌های مشارکت‌کننده برای فیلد rating.
rating_scaleشماره

مقیاس رده‌بندی استفاده‌شده برای فیلد rating. اگر حداکثر رده‌بندی ۵ باشد، rating_scale برابر با ۵ است.
categoryenum
(Category)

الزامی

الزامی. نشان‌دهنده دسته نقطه موردعلاقه است.
descriptionشیء
(Text)

شرح نقطه موردعلاقه.
oneOf
(additional_data)

الزامی

فقط یکی از فیلدها در این oneOf می‌تواند تنظیم شود.

نوشتار

نوشتاری را با بومی‌سازی‌ها نشان می‌دهد.

نام فیلدنوعالزامشرح
localizationsآرایه شیء
(LocalizedString)

رشته‌های بومی‌سازی‌شده.
default_localeرشته

منطقه زبانی که به‌عنوان زبان پیش‌فرض استفاده می‌شود باید در بومی‌سازی‌ها وجود داشته باشد.

LocalizedString

نشان‌دهنده رشته بومی‌سازی‌شده است.

نام فیلدنوعالزامشرح
localeرشته

برچسب زبان نوشتار، مانند «en»،‏ «en-US»، یا «sr-Latn».
textرشته

نوشتار در منطقه زبانی مشخص‌شده.

GeoCoordinates

داده‌های جغرافیایی مکان، ازجمله عرض جغرافیایی، طول جغرافیایی، و نشانی.

نام فیلدنوعالزامشرح
latitudeشماره

[-90, +90] درجه (فراگیر). اگر طول جغرافیایی تنظیم شده باشد الزامی است، درغیراین‌صورت خوب است که داشته باشید.
longitudeشماره

[-۱۸۰، +۱۸۰] درجه (شامل). اگر عرض جغرافیایی تنظیم شده باشد، الزامی است، درغیراین‌صورت، بهتر است ارائه شود.
oneOf
(addresses)

الزامی

فقط یکی از فیلدها در این oneOf می‌تواند تنظیم شود.

PostalAddress

نشانی پستی مکان.

نام فیلدنوعالزامشرح
countryرشته

الزامی

الزامی. کشور، بااستفاده از کد کشور ISO 3166-1 alpha-2، برای نمونه «US».
localityرشته

الزامی

الزامی. منطقه/شهر، مثلاً «Mountain View».
regionرشته

منطقه/ایالت/استان، مثلاً «CA». این فیلد فقط در کشورهایی الزامی است که منطقه معمولاً بخشی از نشانی است. (اختیاری)
postal_codeرشته

الزامی

الزامی. کد پستی، مثلاً «94043».
street_addressرشته

الزامی

الزامی. نشانی خیابان، مثلاً «1600 Amphitheatre Pkwy».

تصویر

تصویری از «نقطه موردعلاقه» (POI) را نشان می‌دهد.

نام فیلدنوعالزامشرح
urlرشته

نشانی وب تصویر. ‫Google رسانه‌های میزبانی‌شده در این نشانی وب را می‌خزد. حداکثر طول: ۲۰۰۰.
alt_textشیء
(Text)

نوشتار جایگزین برای استفاده در دسترس‌پذیری.

HotelData

داده‌های فید ویژه هتل.

نام فیلدنوعالزامشرح
hotel_star_classشماره

مقدار ستاره کلاس رسمی هتل. می‌تواند در برچسبی مثل «هتل ۵ ستاره» استفاده شود. این مقدار باید عدد صحیحی بین ۰ و ۵ باشد. اگر رده‌بندی دردسترس نیست یا مشخص نشده است، باید از رده‌بندی ۰ استفاده شود. وقتی روی ۰ تنظیم شود، هیچ کلاس ستاره‌ای در واسط کاربر برای کاربران نمایش داده نخواهد شد.
brand_idsآرایه رشته

نمانام‌هایی که می‌توانند این هتل را نمایش دهند. اگر این فیلد خالی باشد، هتل می‌تواند تحت هرکدام از نمانام‌های مرتبط با فید نمایش داده شود.

LocalData

داده‌های فید مختص مؤسسه.

نام فیلدنوعالزامشرح
business_hoursشیء
(BusinessHours)

ساعت کاری معمول مؤسسه.
price_rangeشیء
(PriceRange)

محدوده قیمت خدمات ارائه‌شده توسط مؤسسه.
establishment_categoryشیء
(Text)

نوع مؤسسه.
brand_landing_pagesآرایه شیء
(BrandLandingPages)

الزامی

الزامی. صفحه‌های مقصد نمانام. حداقل یکی باید ارائه شود.

BusinessHours

نشان‌دهنده دوره‌های زمانی است که این مکان برای کسب‌وکار باز است. مجموعه‌ای از نمونه‌های [TimeRange][madden.vss_poi_feed.TimeRange] را نگه می‌دارد. برای نمونه: شنبه‌ها از ۹ صبح تا ۱۲ ظهر و از ۱ بعدازظهر تا ۵ بعدازظهر باز است: 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 } } برای نمونه: شنبه‌ها از ۹ شب تا ۲ بامداد یکشنبه باز است: 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_dayenum
(DayOfWeek)

روز باز محدوده زمانی.
open_timeشیء
(TimeOfDay)

ساعت شروع کار در بازه زمانی.
close_dayenum
(DayOfWeek)

روز پایانی بازه زمانی.
close_timeشیء
(TimeOfDay)

زمان پایان محدوده زمانی.

TimeOfDay

نام فیلدنوعالزامشرح
hoursشماره

ساعات روز در قالب ۲۴ ساعته. باید بزرگ‌تر یا مساوی ۰ باشد و معمولاً باید کوچک‌تر یا مساوی ۲۳ باشد. ممکن است API انتخاب کند که مقدار «24:00:00» را برای سناریوهایی مثل زمان بسته شدن کسب‌وکار مجاز کند.
minutesشماره

دقیقه در ساعت. باید بزرگ‌تر یا مساوی با ۰ و کوچک‌تر یا مساوی با ۵۹ باشد.
secondsشماره

ثانیه‌های یک دقیقه. باید بزرگ‌تر یا مساوی ۰ و معمولاً باید کوچک‌تر یا مساوی ۵۹ باشد. اگر یک API ثانیه‌های کبیسه را مجاز کند، ممکن است مقدار ۶۰ را مجاز کند.
nanosشماره

کسرهای ثانیه، برحسب نانوثانیه. باید بزرگ‌تر یا مساوی با ۰ و کوچک‌تر یا مساوی با ۹۹۹٬۹۹۹٬۹۹۹ باشد.

PriceRange

محدوده قیمت خدمات ارائه‌شده توسط نقطه موردعلاقه.

نام فیلدنوعالزامشرح
min_priceشیء
(Money)

حداقل قیمت خدمات ارائه‌شده توسط نقطه موردعلاقه.
max_priceشیء
(Money)

حداکثر قیمت خدمات ارائه‌شده توسط نقطه موردعلاقه.

پول

نشان‌دهنده مبلغی پول با نوع واحد پول آن است.

نام فیلدنوعالزامشرح
currency_codeرشته

کد ارز سه‌حرفی تعریف‌شده در ISO 4217.
unitsشماره

واحدهای کامل مبلغ. برای مثال، اگر currencyCode برابر با "USD" باشد، ۱ واحد برابر با یک دلار امریکا است.
nanosشماره

تعداد واحدهای نانو (۱۰^-۹) مبلغ. مقدار باید بین ۹۹۹٬۹۹۹٬۹۹۹- و ۹۹۹٬۹۹۹٬۹۹۹+ باشد و می‌تواند این دو عدد را نیز دربر بگیرد. اگر units مثبت باشد، nanos باید مثبت یا صفر باشد. اگر units صفر باشد، nanos می‌تواند مثبت، صفر، یا منفی باشد. اگر units منفی است، nanos باید منفی یا صفر باشد. برای مثال، ‎-۱٫۷۵ دلار به‌صورت units=-۱ و nanos=-۷۵۰٬۰۰۰٬۰۰۰ نشان داده می‌شود.

BrandLandingPages

صفحه‌های مقصد بومی‌سازی‌شده نمانام برای یک «نقطه موردعلاقه» (POI).

نام فیلدنوعالزامشرح
brand_idرشته

الزامی

الزامی. نمانامی که این پیکربندی برای آن اعمال می‌شود.
localized_landing_pagesآرایه شیء
(LocalizedLandingPage)

صفحه‌های مقصد بومی‌سازی‌شده. مقادیر فیلدهای نشانی وب و منطقه‌های زبانی باید در همه صفحه‌های مقصد بومی‌سازی‌شده یکتا باشد.
default_urlرشته

الزامی

الزامی. نشانی وب صفحه مقصد پیش‌فرض که وقتی هیچ‌کدام از صفحه‌های مقصد بومی‌سازی‌شده با زبان کاربر مطابقت ندارد استفاده می‌شود.

LocalizedLandingPage

صفحه مقصد بومی‌سازی‌شده برای «نقطه موردعلاقه» (POI).

نام فیلدنوعالزامشرح
urlرشته

نشانی وب صفحه مقصد. حداکثر طول: ۲۰۰۰.
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شیء
(HotelData)

با local_data متقابلاً انحصاری است

فیلدهای مختص هتل.
local_dataشیء
(LocalData)

با hotel_data متقابلاً انحصاری است

فیلدهای خاص محلی.

نشانی‌ها

الزامی. نشانی مکان.

نام فیلدنوعالزامشرح
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;
}

تعریف مختصات جغرافیایی

// 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;
}

تعریف «صفحه‌های مقصد نمانام»

// 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"
          }
        ]
      }
    }
  ]
}