Önemli yer (ÖY) feed'i

ÖY feed'leri oluşturma ve yükleme

ÖY feed'leri oluşturup yüklerken aşağıdaki talimatları uygulayın:

  • Önemli yer verileri dosyaları için Önemli yer feed'i bölümünde açıklanan spesifikasyona uyun. Her yükleme için benzersiz ÖYV verisi dosya adları kullanmanızı öneririz. Dosya adına zaman damgası ekleyin. Örneğin, POI_1633621547.json.
  • Feed'leri yerel ÖY SFTP sunucusuna günlük olarak tam yenileme şeklinde yükleyin.
  • SFTP sunucusu ayrıntılarını İş Ortağı Portalı'nın Yapılandırma > Feed'ler bölümünde bulabilirsiniz.

Feed sunucularını seçme

  • Feed alımı durumunu İş Ortağı Portalı'nın Alım > Geçmiş bölümünde görüntüleyin.

Feed Spesifikasyonları

Alan koşulları

VssPoi

Tek bir önemli yer (ÖY) varlığını (ör. otel veya restoran) temsil eder.

Alan AdıTürGereksinimAçıklama
poi_iddize

Zorunlu

Zorunlu. İş ortağı tarafından oluşturulan ve bir ÖY'yi tanımlayan dize.
nameobject
(Text)

Zorunlu

Zorunlu. ÖY'nin adı.
telephonedize

ÖY'nin ülke ve alan kodları dahil olmak üzere iletişim telefon numarası (ör. +14567891234).
urldize

ÖY'nin herkese açık web sitesinin URL'si. Not: Bu yalnızca eşleştirme amacıyla kullanılır, görüntüleme amacıyla kullanılmaz.
locationobject
(GeoCoordinates)

Zorunlu

Zorunlu. ÖY'nin konumu.
display_addressobject
(Text)

Kullanıcı arayüzünde gösterilen adres.
imagesnesne dizisi
(Image)

ÖY'nin resimleri. Maksimum resim sayısı: 5.
ratingsayı

ÖY'nin ortalama puanı.
num_ratingssayı

rating alanı için katkıda bulunan puan sayısı.
rating_scalesayı

rating alanı için kullanılan derecelendirme ölçeği. Maksimum puan 5 ise rating_scale 5 olur.
categoryenum
(Category)

Zorunlu

Zorunlu. ÖY'nin kategorisini gösterir.
descriptionobject
(Text)

Önemli yerin açıklaması.
oneOf
(additional_data)

Zorunlu

Bu oneOf'taki alanlardan yalnızca biri ayarlanabilir.

Metin

Yerelleştirilmiş metni temsil eder.

Alan AdıTürGereksinimAçıklama
localizationsnesne dizisi
(LocalizedString)

Yerelleştirilmiş dizeler.
default_localedize

Varsayılan dil olarak kullanılacak yerel ayar, yerelleştirmelerde bulunmalıdır.

LocalizedString

Yerelleştirilmiş bir dizeyi temsil eder.

Alan AdıTürGereksinimAçıklama
localedize

Metnin dil etiketi (ör. "en", "en-US" veya "sr-Latn").
textdize

Belirtilen yerel ayardaki metin.

GeoCoordinates

Enlem, boylam ve adres dahil olmak üzere bir konumun coğrafi verileri.

Alan AdıTürGereksinimAçıklama
latitudesayı

[-90, +90] derece (dahil). Boylam ayarlanmışsa zorunludur, aksi takdirde isteğe bağlıdır.
longitudesayı

[-180, +180] derece (dahil). Enlem ayarlanmışsa zorunludur, aksi takdirde isteğe bağlıdır.
oneOf
(addresses)

Zorunlu

Bu oneOf'taki alanlardan yalnızca biri ayarlanabilir.

PostalAddress

Konumun posta adresi.

Alan AdıTürGereksinimAçıklama
countrydize

Zorunlu

Zorunlu. ISO 3166-1 alfa-2 ülke kodu kullanılarak belirtilen ülke (ör. "US").
localitydize

Zorunlu

Zorunlu. Yerleşim yeri/şehir (ör. "Mountain View").
regiondize

Bölge/eyalet/il, ör. "CA". Bu alan yalnızca bölgenin genellikle adresin bir parçası olduğu ülkelerde zorunludur. (isteğe bağlı)
postal_codedize

Zorunlu

Zorunlu. Posta kodu (ör. "94043")
street_addressdize

Zorunlu

Zorunlu. Açık adres (ör. "1600 Amphitheatre Pkwy").

Resim

Önemli yerin (ÖY) resmini gösterir.

Alan AdıTürGereksinimAçıklama
urldize

Resmin URL'si. Google, bu URL'de barındırılan medyayı tarar. Maksimum uzunluk: 2.000
alt_textobject
(Text)

Erişilebilirlik için kullanılacak alternatif metin.

HotelData

Otele özel feed verileri.

Alan AdıTürGereksinimAçıklama
hotel_star_classsayı

Resmi otel sınıfı yıldız değeri. "5 yıldızlı otel" gibi bir etikette kullanılabilir. Bu değerin 1 ile 5 arasında bir tam sayı olması beklenir.
brand_idsdize dizisi

Bu oteli gösterebilecek markalar. Bu alan boşsa otel, feed'le ilişkili markaların herhangi birinin altında gösterilebilir.

LocalData

İşletmeye özgü feed verileri.

Alan AdıTürGereksinimAçıklama
business_hoursobject
(BusinessHours)

Kuruluşun normal çalışma saatleri.
price_rangeobject
(PriceRange)

Tesisin sunduğu hizmetlerin fiyat aralığı.
establishment_categoryobject
(Text)

Kuruluşun türü.
brand_landing_pagesnesne dizisi
(BrandLandingPages)

Markanın açılış sayfaları.

BusinessHours

Bu konumun açık olduğu zaman aralıklarını gösterir. [TimeRange][madden.vss_poi_feed.TimeRange] örnekleri koleksiyonunu içerir. Örnek: Cumartesi günleri 09:00-12:00 ve 13:00-17:00 saatleri arasında açık: 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 } } Örnek: Cumartesi günleri 21:00'dan Pazar günleri 02:00'a kadar açık: time_ranges { open_day: SATURDAY open_time: { hours: 21, minutes: 0 } close_day: SUNDAY close_time: { hours: 2, minutes: 0 } }

Alan AdıTürGereksinimAçıklama
time_rangesnesne dizisi
(TimeRange)

Bu ÖY'nin açık olduğu saatler. Her dönem, ÖY'nin hafta içinde açık olduğu saat aralığını gösterir.

TimeRange

ÖY'nün açık olduğu zaman aralığını gösterir. Belirtilen açılış günü/saati ile başlar ve belirtilen kapanış günü/saati ile sona erer. Kapanış zamanı, açılış zamanından sonra olmalıdır. Örneğin, aynı günün ilerleyen saatlerinde veya sonraki bir günde.

Alan AdıTürGereksinimAçıklama
open_dayenum
(DayOfWeek)

Zaman aralığının açık olduğu gün.
open_timeobject
(TimeOfDay)

Zaman aralığının başlangıç zamanı.
close_dayenum
(DayOfWeek)

Zaman aralığının kapanış günü.
close_timeobject
(TimeOfDay)

Zaman aralığının kapanış zamanı.

TimeOfDay

Alan AdıTürGereksinimAçıklama
hourssayı

Bir günün saatleri (24 saatlik biçimde). 0'dan büyük veya 0'a eşit olmalı ve genellikle 23'ten küçük veya 23'e eşit olmalıdır. Bir API, işletmenin kapanış saati gibi senaryolarda "24:00:00" değerine izin vermeyi seçebilir.
minutessayı

Saatin dakikası. 0'dan büyük veya 0'a eşit ve 59'dan küçük veya 59'a eşit olmalıdır.
secondssayı

Bir dakikanın saniyeleri. 0'dan büyük veya 0'a eşit olmalı ve genellikle 59'dan küçük veya 59'a eşit olmalıdır. Bir API, artık saniyelere izin veriyorsa 60 değerine izin verebilir.
nanossayı

Saniyenin nanosaniye cinsinden kesirleri. 0'dan büyük veya 0'a eşit ve 999.999.999'dan küçük veya 999.999.999'a eşit olmalıdır.

PriceRange

ÖÖ'nün sunduğu hizmetlerin fiyat aralığı.

Alan AdıTürGereksinimAçıklama
min_priceobject
(Money)

ÖY'nin sunduğu hizmetlerin minimum fiyatı.
max_priceobject
(Money)

ÖY'nün sunduğu hizmetlerin maksimum fiyatı.

Para

Para birimi türüyle birlikte bir para tutarını gösterir.

Alan AdıTürGereksinimAçıklama
currency_codedize

ISO 4217'de tanımlanan üç harfli para birimi kodu.
unitssayı

Tutarın tam birimleri. Örneğin, currencyCode "USD" ise 1 birim 1 ABD dolarıdır.
nanossayı

Tutarın nano (10^-9) birim sayısı. Değer, -999.999.999 ile +999.999.999 arasında (değerler dahil) olmalıdır. units pozitifse nanos pozitif veya sıfır olmalıdır. units sıfırsa nanos pozitif, sıfır veya negatif olabilir. units negatifse nanos negatif veya sıfır olmalıdır. Örneğin, -1,75 ABD doları units=-1 ve nanos=-750.000.000 olarak gösterilir.

BrandLandingPages

Tek bir önemli yer (ÖY) için yerelleştirilmiş marka açılış sayfaları.

Alan AdıTürGereksinimAçıklama
brand_iddize

Bu yapılandırmanın uygulandığı marka.
localized_landing_pagesnesne dizisi
(LocalizedLandingPage)

Yerelleştirilmiş açılış sayfaları. URL ve yerel ayar alan değerleri, yerelleştirilmiş tüm açılış sayfalarında benzersiz olmalıdır.
default_urldize

Yerelleştirilmiş açılış sayfalarından hiçbiri kullanıcının diliyle eşleşmediğinde kullanılacak varsayılan açılış sayfası URL'si.

LocalizedLandingPage

Önemli yer (ÖY) için yerelleştirilmiş açılış sayfası.

Alan AdıTürGereksinimAçıklama
urldize

Açılış sayfasının URL'si. Maksimum uzunluk: 2.000
localesdize dizisi

Bu sayfayı, belirtilen dil tercihine sahip kullanıcılarla kısıtlar. "en", "en-US" veya "sr-Latn" gibi dil etiketleri içermelidir.

Kategori

ÖY'nin kategorisini gösterir. Aşağıdaki additional_data oneof alanı ile eşleşmelidir.

AdAçıklama
UNKNOWN_CATEGORY
HOTEL
LOCAL

HaftanınGünü

Haftanın bir gününü temsil eder.

AdAçıklama
DAY_OF_WEEK_UNSPECIFIEDHaftanın günü belirtilmemiş.
MONDAYPazartesi
TUESDAYSalı
WEDNESDAYÇarşamba
THURSDAYPerşembe
FRIDAYCuma
SATURDAYCumartesi
SUNDAYPazar

additional_data

Zorunlu. Kategoriye özgü alanlar. Bu alan, yukarıdaki category alanı ile eşleşmelidir.

Alan AdıTürGereksinimAçıklama
hotel_dataobject
(HotelData)

local_data ile karşılıklı olarak birbirini dışlar.

Otele özgü alanlar.
local_dataobject
(LocalData)

hotel_data ile karşılıklı olarak birbirini dışlar.

Yerel olarak belirli alanlar.

adresler

Zorunlu. Bir konumun adresi.

Alan AdıTürGereksinimAçıklama
addressobject
(PostalAddress)

Konumun posta adresi.
  • Biçim: JPEG, PNG veya WebP olmalıdır.
  • Maksimum dosya boyutu: Resim başına 30 MB'tan az.
  • Maksimum boyutlar: Toplamda 75 megapikselden az (genişlik x yükseklik < 75.000.000).
  • URL Türü: Resim öğesine doğrudan giden yol (ör. .jpg ile biter).
  • İzinler: Barındırma sunucusunun Googlebot veya tarayıcılara erişime izin verdiğinden ve resim dizinlerini engelleyen bir robots.txt dosyası olmadığından emin olun.

Tanımlar

VssPoiFeed Tanımı

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

}

Metin tanımı

// 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 Tanımı

// 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 Tanımı

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

Resim Tanımı

// 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 Tanımı

// 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 Tanımı

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

Örnekler

Önemli Yer Feed'i

Dosya adı: 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"
          }
        ]
      }
    }
  ]
}

Çok dilli ÖY feed'i

Dosya adı: 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"
          }
        ]
      }
    }
  ]
}