| Required role: | Consumer |
"use strict";
/** @typedef {'StreetParking'|'ParkingGarageNearby'} */
export var Parking;
(function (Parking) {
Parking["StreetParking"] = "StreetParking"
Parking["ParkingGarageNearby"] = "ParkingGarageNearby"
})(Parking || (Parking = {}));
/** @typedef {'Visa'|'MasterCard'|'AmericanExpress'|'Diners'|'Vipps'} */
export var PaymentOption;
(function (PaymentOption) {
PaymentOption["Visa"] = "Visa"
PaymentOption["MasterCard"] = "MasterCard"
PaymentOption["AmericanExpress"] = "AmericanExpress"
PaymentOption["Diners"] = "Diners"
PaymentOption["Vipps"] = "Vipps"
})(PaymentOption || (PaymentOption = {}));
/** @typedef {'Value'|'Medium'|'High'|'FineDining'} */
export var PriceMainDish;
(function (PriceMainDish) {
PriceMainDish["Value"] = "Value"
PriceMainDish["Medium"] = "Medium"
PriceMainDish["High"] = "High"
PriceMainDish["FineDining"] = "FineDining"
})(PriceMainDish || (PriceMainDish = {}));
/** @typedef {'Sunday'|'Monday'|'Tuesday'|'Wednesday'|'Thursday'|'Friday'|'Saturday'} */
export var DayOfWeek;
(function (DayOfWeek) {
DayOfWeek["Sunday"] = "Sunday"
DayOfWeek["Monday"] = "Monday"
DayOfWeek["Tuesday"] = "Tuesday"
DayOfWeek["Wednesday"] = "Wednesday"
DayOfWeek["Thursday"] = "Thursday"
DayOfWeek["Friday"] = "Friday"
DayOfWeek["Saturday"] = "Saturday"
})(DayOfWeek || (DayOfWeek = {}));
export class OpenAtTimeDto {
/** @param {{weekDay?:DayOfWeek,hour?:number,minute?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {?DayOfWeek} */
weekDay;
/** @type {?number} */
hour;
/** @type {?number} */
minute;
}
export class ImageUrls {
/** @param {{preview?:string,small?:string,medium?:string,large?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
preview;
/** @type {string} */
small;
/** @type {string} */
medium;
/** @type {string} */
large;
}
export class OpeningHour {
/** @param {{openAtHour?:number,openAtMinute?:number,closeAtHour?:number,closeAtMinute?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {?number} */
openAtHour;
/** @type {?number} */
openAtMinute;
/** @type {?number} */
closeAtHour;
/** @type {?number} */
closeAtMinute;
}
export class WeeklyOpeningHours {
/** @param {{monday?:OpeningHour,tuesday?:OpeningHour,wednesday?:OpeningHour,thursday?:OpeningHour,friday?:OpeningHour,saturday?:OpeningHour,sunday?:OpeningHour}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {?OpeningHour} */
monday;
/** @type {?OpeningHour} */
tuesday;
/** @type {?OpeningHour} */
wednesday;
/** @type {?OpeningHour} */
thursday;
/** @type {?OpeningHour} */
friday;
/** @type {?OpeningHour} */
saturday;
/** @type {?OpeningHour} */
sunday;
}
export class OpeningHours {
/** @param {{weekly?:WeeklyOpeningHours}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {WeeklyOpeningHours} */
weekly;
}
/** @typedef {'Mall'|'Regular'} */
export var PlaceType;
(function (PlaceType) {
PlaceType["Mall"] = "Mall"
PlaceType["Regular"] = "Regular"
})(PlaceType || (PlaceType = {}));
export class PriceMainDishApiDto {
/** @param {{title?:string,slug?:PriceMainDish}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
title;
/** @type {?PriceMainDish} */
slug;
}
export class TimeZoneDto {
/** @param {{baseUtcOffset?:string,daylightName?:string,displayName?:string,id?:string,standardName?:string,supportsDaylightSavingTime?:boolean}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {?string} */
baseUtcOffset;
/** @type {string} */
daylightName;
/** @type {string} */
displayName;
/** @type {string} */
id;
/** @type {string} */
standardName;
/** @type {?boolean} */
supportsDaylightSavingTime;
}
export class PlaceContact {
/** @param {{phone?:string,email?:string,website?:string,webShop?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {?string} */
phone;
/** @type {?string} */
email;
/** @type {?string} */
website;
/** @type {?string} */
webShop;
}
export class PlaceAddress {
/** @param {{street?:string,postalCode?:string,region?:string,countryCode?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
street;
/** @type {string} */
postalCode;
/** @type {string} */
region;
/** @type {string} */
countryCode;
}
export class CategoryTreeApiDto {
/** @param {{name?:string,slug?:string,absoluteSlug?:string,imageUrl?:string,allImageUrl?:string,iconImageUrl?:string,position?:number,children?:CategoryTreeApiDto[]}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
name;
/** @type {string} */
slug;
/** @type {string} */
absoluteSlug;
/** @type {?string} */
imageUrl;
/** @type {?string} */
allImageUrl;
/** @type {?string} */
iconImageUrl;
/** @type {?number} */
position;
/** @type {?CategoryTreeApiDto[]} */
children = [];
}
export class WearPriceProfileEsDto {
/** @param {{slug?:string,label?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
slug;
/** @type {string} */
label;
}
export class BrandApiDto {
/** @param {{name?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
name;
}
export class PlaceCustomBrandApiDto {
/** @param {{name?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
name;
}
export class PlaceSelectedBrandApiDto {
/** @param {{brand?:BrandApiDto,categoryAbsoluteSlugs?:string[],placeCustomBrand?:PlaceCustomBrandApiDto}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {?BrandApiDto} */
brand;
/** @type {?string[]} */
categoryAbsoluteSlugs = [];
/** @type {?PlaceCustomBrandApiDto} */
placeCustomBrand;
}
export class PlaceBasicApiDto {
/** @param {{id?:number,guid?:string,overview?:string,name?:string,longitude?:number,latitude?:number,claimed?:boolean,organizationNumber?:string,countryCode?:string,openingHours?:OpeningHours,wheelchairAccessible?:boolean,wifi?:boolean,outdoorSeating?:boolean,saveFoodAndMoney?:boolean,placeType?:PlaceType,priceMainDish?:PriceMainDishApiDto,timeZoneDto?:TimeZoneDto,businessId?:number,contact?:PlaceContact,address?:PlaceAddress,categories?:CategoryTreeApiDto[],logoUrl?:ImageUrls,imageUrl?:ImageUrls,wearPriceProfiles?:WearPriceProfileEsDto[],brands?:PlaceSelectedBrandApiDto[],floor?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {?number} */
id;
/** @type {?string} */
guid;
/** @type {?string} */
overview;
/** @type {string} */
name;
/** @type {?number} */
longitude;
/** @type {?number} */
latitude;
/** @type {?boolean} */
claimed;
/** @type {?string} */
organizationNumber;
/** @type {string} */
countryCode;
/** @type {?OpeningHours} */
openingHours;
/** @type {?boolean} */
wheelchairAccessible;
/** @type {?boolean} */
wifi;
/** @type {?boolean} */
outdoorSeating;
/** @type {?boolean} */
saveFoodAndMoney;
/** @type {?PlaceType} */
placeType;
/** @type {?PriceMainDishApiDto} */
priceMainDish;
/** @type {TimeZoneDto} */
timeZoneDto;
/** @type {?number} */
businessId;
/** @type {PlaceContact} */
contact;
/** @type {PlaceAddress} */
address;
/** @type {CategoryTreeApiDto[]} */
categories = [];
/** @type {?ImageUrls} */
logoUrl;
/** @type {?ImageUrls} */
imageUrl;
/** @type {WearPriceProfileEsDto[]} */
wearPriceProfiles = [];
/** @type {PlaceSelectedBrandApiDto[]} */
brands = [];
/** @type {?string} */
floor;
}
export class AdDetailsBase {
/** @param {{description?:string,moreInformation?:string[]}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {?string} */
description;
/** @type {?string[]} */
moreInformation = [];
}
export class AdDetailsPercentageDiscountOnAllMerchandise extends AdDetailsBase {
/** @param {{value?:number,description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {?number} */
value;
}
export class AdDetailsPercentageDiscountRangeOnAllMerchandise extends AdDetailsBase {
/** @param {{start?:number,stop?:number,description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {?number} */
start;
/** @type {?number} */
stop;
}
export class AdDetailsPercentageDiscountOnSelectedMerchandise extends AdDetailsBase {
/** @param {{value?:number,description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {?number} */
value;
}
export class AdDetailsAbsoluteDiscountOnSelectedMerchandise extends AdDetailsBase {
/** @param {{value?:number,description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {?number} */
value;
}
export class AdDetailsAbsoluteDiscountRangeOnAllMerchandise extends AdDetailsBase {
/** @param {{start?:number,stop?:number,description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {?number} */
start;
/** @type {?number} */
stop;
}
export class AdDetailsTotalAmountOverXgivesYdiscount extends AdDetailsBase {
/** @param {{ifTotalAmountMoreThanX?:number,thenYouGetDiscountPercentageY?:number,description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {?number} */
ifTotalAmountMoreThanX;
/** @type {?number} */
thenYouGetDiscountPercentageY;
}
export class AdDetailsXforYdiscount extends AdDetailsBase {
/** @param {{ifYouBuyX?:number,thenYouGetY?:number,description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {?number} */
ifYouBuyX;
/** @type {?number} */
thenYouGetY;
}
export class AdDetailsNewArrivals extends AdDetailsBase {
/** @param {{description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
}
export class AdDetailsFreetext extends AdDetailsBase {
/** @param {{title?:string,description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {string} */
title;
}
export class AdDetailsTodaysBreakFastOffer extends AdDetailsBase {
/** @param {{value?:number,description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {?number} */
value;
}
export class AdDetailsTodaysLunchOffer extends AdDetailsBase {
/** @param {{value?:number,description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {?number} */
value;
}
export class AdDetailsTodaysDinnerOffer extends AdDetailsBase {
/** @param {{value?:number,description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {?number} */
value;
}
export class AdDetailsSaveFoodAndMoney extends AdDetailsBase {
/** @param {{value?:number,description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {?number} */
value;
}
export class AdDetailsPercentageOffYourFoodBill extends AdDetailsBase {
/** @param {{percentage?:number,description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {?number} */
percentage;
}
export class AdDetailsHappyHour extends AdDetailsBase {
/** @param {{description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
}
export class AdDetailsSomeFreeTablesLeftToday extends AdDetailsBase {
/** @param {{description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
}
export class AdDetailsTwoDishesForThePriceOfOne extends AdDetailsBase {
/** @param {{description?:string,moreInformation?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
}
export class AdDetailsUnion {
/** @param {{percentageOnAllMerchandise?:AdDetailsPercentageDiscountOnAllMerchandise,percentageRangeOnAllMerchandise?:AdDetailsPercentageDiscountRangeOnAllMerchandise,percentageOnSelectedMerchandise?:AdDetailsPercentageDiscountOnSelectedMerchandise,absoluteOnSelectedMerchandise?:AdDetailsAbsoluteDiscountOnSelectedMerchandise,absoluteRangeOnAllMerchandise?:AdDetailsAbsoluteDiscountRangeOnAllMerchandise,totalAmountOverXgivesYdiscount?:AdDetailsTotalAmountOverXgivesYdiscount,xforY?:AdDetailsXforYdiscount,newArrivals?:AdDetailsNewArrivals,freetext?:AdDetailsFreetext,todaysBreakFastOffer?:AdDetailsTodaysBreakFastOffer,todaysLunchOffer?:AdDetailsTodaysLunchOffer,todaysDinnerOffer?:AdDetailsTodaysDinnerOffer,saveFoodAndMoney?:AdDetailsSaveFoodAndMoney,percentageOfYourFoodBill?:AdDetailsPercentageOffYourFoodBill,happyHour?:AdDetailsHappyHour,someFreeTablesLeftToday?:AdDetailsSomeFreeTablesLeftToday,twoDishesForThePriceOfOne?:AdDetailsTwoDishesForThePriceOfOne}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {?AdDetailsPercentageDiscountOnAllMerchandise} */
percentageOnAllMerchandise;
/** @type {?AdDetailsPercentageDiscountRangeOnAllMerchandise} */
percentageRangeOnAllMerchandise;
/** @type {?AdDetailsPercentageDiscountOnSelectedMerchandise} */
percentageOnSelectedMerchandise;
/** @type {?AdDetailsAbsoluteDiscountOnSelectedMerchandise} */
absoluteOnSelectedMerchandise;
/** @type {?AdDetailsAbsoluteDiscountRangeOnAllMerchandise} */
absoluteRangeOnAllMerchandise;
/** @type {?AdDetailsTotalAmountOverXgivesYdiscount} */
totalAmountOverXgivesYdiscount;
/** @type {?AdDetailsXforYdiscount} */
xforY;
/** @type {?AdDetailsNewArrivals} */
newArrivals;
/** @type {?AdDetailsFreetext} */
freetext;
/** @type {?AdDetailsTodaysBreakFastOffer} */
todaysBreakFastOffer;
/** @type {?AdDetailsTodaysLunchOffer} */
todaysLunchOffer;
/** @type {?AdDetailsTodaysDinnerOffer} */
todaysDinnerOffer;
/** @type {?AdDetailsSaveFoodAndMoney} */
saveFoodAndMoney;
/** @type {?AdDetailsPercentageOffYourFoodBill} */
percentageOfYourFoodBill;
/** @type {?AdDetailsHappyHour} */
happyHour;
/** @type {?AdDetailsSomeFreeTablesLeftToday} */
someFreeTablesLeftToday;
/** @type {?AdDetailsTwoDishesForThePriceOfOne} */
twoDishesForThePriceOfOne;
}
export class AdDto {
/** @param {{id?:number,guid?:string,title?:string,startAt?:string,stopAt?:string,publishAt?:string,imageUrls?:ImageUrls[],place?:PlaceBasicApiDto,detailsUnion?:AdDetailsUnion,starredCount?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {?number} */
id;
/** @type {?string} */
guid;
/** @type {string} */
title;
/** @type {?string} */
startAt;
/** @type {?string} */
stopAt;
/** @type {?string} */
publishAt;
/** @type {ImageUrls[]} */
imageUrls = [];
/** @type {PlaceBasicApiDto} */
place;
/** @type {AdDetailsUnion} */
detailsUnion;
/** @type {?number} */
starredCount;
}
/** @typedef {'BarSpeciality'|'BarType'|'Cuisine'|'SaveFoodAndMoney'|'MealType'|'Menu'|'OutdoorSeating'|'Parking'|'PaymentOptions'|'PriceMainDish'|'SubCategories'|'SubCategoriesAndBrands'|'EatingSuitabilities'|'TakeAway'|'WearPriceProfile'|'WheelChairAccessible'|'Wifi'|'WebShop'|'Filtering'} */
export var FeatureType;
(function (FeatureType) {
FeatureType["BarSpeciality"] = "BarSpeciality"
FeatureType["BarType"] = "BarType"
FeatureType["Cuisine"] = "Cuisine"
FeatureType["SaveFoodAndMoney"] = "SaveFoodAndMoney"
FeatureType["MealType"] = "MealType"
FeatureType["Menu"] = "Menu"
FeatureType["OutdoorSeating"] = "OutdoorSeating"
FeatureType["Parking"] = "Parking"
FeatureType["PaymentOptions"] = "PaymentOptions"
FeatureType["PriceMainDish"] = "PriceMainDish"
FeatureType["SubCategories"] = "SubCategories"
FeatureType["SubCategoriesAndBrands"] = "SubCategoriesAndBrands"
FeatureType["EatingSuitabilities"] = "EatingSuitabilities"
FeatureType["TakeAway"] = "TakeAway"
FeatureType["WearPriceProfile"] = "WearPriceProfile"
FeatureType["WheelChairAccessible"] = "WheelChairAccessible"
FeatureType["Wifi"] = "Wifi"
FeatureType["WebShop"] = "WebShop"
FeatureType["Filtering"] = "Filtering"
})(FeatureType || (FeatureType = {}));
JavaScript FindBoundedMapAdsRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /jsonl/reply/FindBoundedMapAdsRequest HTTP/1.1
Host: unstable-consumer-api.brovs.com
Accept: text/jsonl
Content-Type: text/jsonl
Content-Length: length
{"cacheVersion":0,"filter":{"term":"String","placeGuid":"00000000-0000-0000-0000-000000000000","adGuid":"00000000-0000-0000-0000-000000000000","categoryAbsoluteSlugs":["String"],"barSpecialitySlugs":["String"],"barTypeSlugs":["String"],"brandNames":["String"],"cuisineSlugs":["String"],"mealTypeSlugs":["String"],"parking":["StreetParking"],"paymentOptions":["Visa"],"priceMainDishes":["Value"],"eatingSuitabilitySlugs":["String"],"takeAwaySlugs":["String"],"wearPriceProfileSlugs":["String"],"wheelChairAccessible":false,"wifi":false,"outdoorSeating":false,"saveFoodAndMoney":false,"openAt":{"weekDay":"Sunday","hour":0,"minute":0}},"bounds":{"north":0,"south":0,"east":0,"west":0,"clusterZoomLevel":0}}
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length
{"clusters":[{"count":0,"latitude":0,"longitude":0}],"adsWithDisplayLocation":[{"ad":{"id":0,"title":"String","startAt":"0001-01-01T00:00:00.0000000+00:00","stopAt":"0001-01-01T00:00:00.0000000+00:00","publishAt":"0001-01-01T00:00:00.0000000+00:00","imageUrls":[{"preview":"String","small":"String","medium":"String","large":"String"}],"place":{"id":0,"overview":"String","name":"String","longitude":0,"latitude":0,"claimed":false,"organizationNumber":"String","countryCode":"String","openingHours":{"weekly":{"monday":{"openAtHour":0,"openAtMinute":0,"closeAtHour":0,"closeAtMinute":0},"tuesday":{"openAtHour":0,"openAtMinute":0,"closeAtHour":0,"closeAtMinute":0},"wednesday":{"openAtHour":0,"openAtMinute":0,"closeAtHour":0,"closeAtMinute":0},"thursday":{"openAtHour":0,"openAtMinute":0,"closeAtHour":0,"closeAtMinute":0},"friday":{"openAtHour":0,"openAtMinute":0,"closeAtHour":0,"closeAtMinute":0},"saturday":{"openAtHour":0,"openAtMinute":0,"closeAtHour":0,"closeAtMinute":0},"sunday":{"openAtHour":0,"openAtMinute":0,"closeAtHour":0,"closeAtMinute":0}}},"wheelchairAccessible":false,"wifi":false,"outdoorSeating":false,"saveFoodAndMoney":false,"placeType":"Mall","priceMainDish":{"title":"String","slug":"Value"},"timeZoneDto":{"baseUtcOffset":"PT0S","daylightName":"String","displayName":"String","id":"String","standardName":"String","supportsDaylightSavingTime":false},"businessId":0,"contact":{"phone":"String","email":"String","website":"String","webShop":"String"},"address":{"street":"String","postalCode":"String","region":"String","countryCode":"String"},"categories":[{"name":"String","slug":"String","absoluteSlug":"String","imageUrl":"String","allImageUrl":"String","iconImageUrl":"String","position":0,"children":[{"name":"String","slug":"String","absoluteSlug":"String","imageUrl":"String","allImageUrl":"String","iconImageUrl":"String","position":0,"children":[{"name":"String","slug":"String","absoluteSlug":"String","imageUrl":"String","allImageUrl":"String","iconImageUrl":"String","position":0}]}]}],"logoUrl":{"preview":"String","small":"String","medium":"String","large":"String"},"imageUrl":{"preview":"String","small":"String","medium":"String","large":"String"},"wearPriceProfiles":[{"slug":"String","label":"String"}],"brands":[{"brand":{"name":"String"},"categoryAbsoluteSlugs":["String"],"placeCustomBrand":{"name":"String"}}],"floor":"String"},"detailsUnion":{"percentageOnAllMerchandise":{"value":0,"description":"String","moreInformation":["String"]},"percentageRangeOnAllMerchandise":{"start":0,"stop":0,"description":"String","moreInformation":["String"]},"percentageOnSelectedMerchandise":{"value":0,"description":"String","moreInformation":["String"]},"absoluteOnSelectedMerchandise":{"value":0,"description":"String","moreInformation":["String"]},"absoluteRangeOnAllMerchandise":{"start":0,"stop":0,"description":"String","moreInformation":["String"]},"totalAmountOverXgivesYdiscount":{"ifTotalAmountMoreThanX":0,"thenYouGetDiscountPercentageY":0,"description":"String","moreInformation":["String"]},"xforY":{"ifYouBuyX":0,"thenYouGetY":0,"description":"String","moreInformation":["String"]},"newArrivals":{"description":"String","moreInformation":["String"]},"freetext":{"title":"String","description":"String","moreInformation":["String"]},"todaysBreakFastOffer":{"value":0,"description":"String","moreInformation":["String"]},"todaysLunchOffer":{"value":0,"description":"String","moreInformation":["String"]},"todaysDinnerOffer":{"value":0,"description":"String","moreInformation":["String"]},"saveFoodAndMoney":{"value":0,"description":"String","moreInformation":["String"]},"percentageOfYourFoodBill":{"percentage":0,"description":"String","moreInformation":["String"]},"happyHour":{"description":"String","moreInformation":["String"]},"someFreeTablesLeftToday":{"description":"String","moreInformation":["String"]},"twoDishesForThePriceOfOne":{"description":"String","moreInformation":["String"]}},"starredCount":0},"crowdedMapDisplayLocation":{"longitude":0,"latitude":0}}],"categoryFacetTrees":[{"name":"String","slug":"String","absoluteSlug":"String","featureTypes":["BarSpeciality"],"type":"Parent","count":0,"imageUrl":"String","allImageUrl":"String","iconImageUrl":"String","position":0,"children":[{"name":"String","slug":"String","absoluteSlug":"String","featureTypes":["BarSpeciality"],"type":"Parent","count":0,"imageUrl":"String","allImageUrl":"String","iconImageUrl":"String","position":0,"children":[{"name":"String","slug":"String","absoluteSlug":"String","featureTypes":["BarSpeciality"],"type":"Parent","count":0,"imageUrl":"String","allImageUrl":"String","iconImageUrl":"String","position":0}]}]}],"placeCount":0,"adSaveFoodAndMoneyCount":0}