ConsumerApi

<back to all web services

SharePlaceLinkUsedRequest

Consumer
The following routes are available for this service:
POST/share/share-place-link-usedA share place link was usedValidates the JWT token with the identity of the sharing user and the shared place and returns relevant information.
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum

# module ConsumerApi


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SharingUser:
    first_name: Optional[str] = None
    last_name: Optional[str] = None
    profile_photo_url: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OpeningHour:
    open_at_hour: int = 0
    open_at_minute: int = 0
    close_at_hour: int = 0
    close_at_minute: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class WeeklyOpeningHours:
    monday: Optional[OpeningHour] = None
    tuesday: Optional[OpeningHour] = None
    wednesday: Optional[OpeningHour] = None
    thursday: Optional[OpeningHour] = None
    friday: Optional[OpeningHour] = None
    saturday: Optional[OpeningHour] = None
    sunday: Optional[OpeningHour] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OpeningHours:
    weekly: Optional[WeeklyOpeningHours] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CategoryTreeApiDto:
    name: Optional[str] = None
    slug: Optional[str] = None
    absolute_slug: Optional[str] = None
    image_url: Optional[str] = None
    all_image_url: Optional[str] = None
    icon_image_url: Optional[str] = None
    position: int = 0
    children: List[CategoryTreeApiDto] = field(default_factory=list)


class FeatureType(str, Enum):
    BAR_SPECIALITY = 'BarSpeciality'
    BAR_TYPE = 'BarType'
    CUISINE = 'Cuisine'
    SAVE_FOOD_AND_MONEY = 'SaveFoodAndMoney'
    MEAL_TYPE = 'MealType'
    MENU = 'Menu'
    OUTDOOR_SEATING = 'OutdoorSeating'
    PARKING = 'Parking'
    PAYMENT_OPTIONS = 'PaymentOptions'
    PRICE_MAIN_DISH = 'PriceMainDish'
    SUB_CATEGORIES = 'SubCategories'
    SUB_CATEGORIES_AND_BRANDS = 'SubCategoriesAndBrands'
    EATING_SUITABILITIES = 'EatingSuitabilities'
    TAKE_AWAY = 'TakeAway'
    WEAR_PRICE_PROFILE = 'WearPriceProfile'
    WHEEL_CHAIR_ACCESSIBLE = 'WheelChairAccessible'
    WIFI = 'Wifi'
    WEB_SHOP = 'WebShop'
    FILTERING = 'Filtering'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class IndividualFeatureDataApiDto:
    slug: Optional[FeatureType] = None
    label: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BarSpecialityEsDto:
    slug: Optional[str] = None
    title: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BarTypeEsDto:
    slug: Optional[str] = None
    title: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BrandApiDto:
    name: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PlaceCustomBrandApiDto:
    name: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PlaceSelectedBrandApiDto:
    brand: Optional[BrandApiDto] = None
    category_absolute_slugs: List[str] = field(default_factory=list)
    place_custom_brand: Optional[PlaceCustomBrandApiDto] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CuisineEsDto:
    label: Optional[str] = None
    slug: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class MealTypeApiDto:
    label: Optional[str] = None
    slug: Optional[str] = None


class Parking(str, Enum):
    STREET_PARKING = 'StreetParking'
    PARKING_GARAGE_NEARBY = 'ParkingGarageNearby'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ParkingApiDto:
    label: Optional[str] = None
    slug: Optional[Parking] = None


class PaymentOption(str, Enum):
    VISA = 'Visa'
    MASTER_CARD = 'MasterCard'
    AMERICAN_EXPRESS = 'AmericanExpress'
    DINERS = 'Diners'
    VIPPS = 'Vipps'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PaymentOptionApiDto:
    label: Optional[str] = None
    slug: Optional[PaymentOption] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class EatingSuitabilityApiDto:
    label: Optional[str] = None
    slug: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TakeAwayApiDto:
    label: Optional[str] = None
    slug: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class WearPriceProfileEsDto:
    slug: Optional[str] = None
    label: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class MenuEsDto:
    name: Optional[str] = None
    url: Optional[str] = None
    position: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ImageUrls:
    preview: Optional[str] = None
    small: Optional[str] = None
    medium: Optional[str] = None
    large: Optional[str] = None


class PlaceType(str, Enum):
    MALL = 'Mall'
    REGULAR = 'Regular'


class PriceMainDish(str, Enum):
    VALUE = 'Value'
    MEDIUM = 'Medium'
    HIGH = 'High'
    FINE_DINING = 'FineDining'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PriceMainDishApiDto:
    title: Optional[str] = None
    slug: Optional[PriceMainDish] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TimeZoneDto:
    base_utc_offset: datetime.timedelta = datetime.timedelta()
    daylight_name: Optional[str] = None
    display_name: Optional[str] = None
    id: Optional[str] = None
    standard_name: Optional[str] = None
    supports_daylight_saving_time: bool = False


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PlaceContact:
    phone: Optional[str] = None
    email: Optional[str] = None
    website: Optional[str] = None
    web_shop: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PlaceAddress:
    street: Optional[str] = None
    postal_code: Optional[str] = None
    region: Optional[str] = None
    country_code: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PlaceBasicApiDto:
    id: int = 0
    guid: Optional[str] = None
    overview: Optional[str] = None
    name: Optional[str] = None
    longitude: float = 0.0
    latitude: float = 0.0
    claimed: bool = False
    organization_number: Optional[str] = None
    country_code: Optional[str] = None
    opening_hours: Optional[OpeningHours] = None
    wheelchair_accessible: Optional[bool] = None
    wifi: Optional[bool] = None
    outdoor_seating: Optional[bool] = None
    save_food_and_money: Optional[bool] = None
    place_type: Optional[PlaceType] = None
    price_main_dish: Optional[PriceMainDishApiDto] = None
    time_zone_dto: Optional[TimeZoneDto] = None
    business_id: Optional[int] = None
    contact: Optional[PlaceContact] = None
    address: Optional[PlaceAddress] = None
    categories: List[CategoryTreeApiDto] = field(default_factory=list)
    logo_url: Optional[ImageUrls] = None
    image_url: Optional[ImageUrls] = None
    wear_price_profiles: List[WearPriceProfileEsDto] = field(default_factory=list)
    brands: List[PlaceSelectedBrandApiDto] = field(default_factory=list)
    floor: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class MallOtherServiceApiDto:
    service_name: Optional[str] = None
    floor: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PlaceApiDto:
    id: int = 0
    guid: Optional[str] = None
    overview: Optional[str] = None
    name: Optional[str] = None
    longitude: float = 0.0
    latitude: float = 0.0
    claimed: bool = False
    organization_number: Optional[str] = None
    country_code: Optional[str] = None
    place_state: Optional[str] = None
    followers_count: int = 0
    opening_hours: Optional[OpeningHours] = None
    categories: List[CategoryTreeApiDto] = field(default_factory=list)
    feature_data: List[IndividualFeatureDataApiDto] = field(default_factory=list)
    bar_specialities: List[BarSpecialityEsDto] = field(default_factory=list)
    bar_types: List[BarTypeEsDto] = field(default_factory=list)
    brands: List[PlaceSelectedBrandApiDto] = field(default_factory=list)
    cuisines: List[CuisineEsDto] = field(default_factory=list)
    meal_types: List[MealTypeApiDto] = field(default_factory=list)
    parking: List[ParkingApiDto] = field(default_factory=list)
    payment_options: List[PaymentOptionApiDto] = field(default_factory=list)
    eating_suitabilities: List[EatingSuitabilityApiDto] = field(default_factory=list)
    take_aways: List[TakeAwayApiDto] = field(default_factory=list)
    wear_price_profiles: List[WearPriceProfileEsDto] = field(default_factory=list)
    menus: List[MenuEsDto] = field(default_factory=list)
    logo_url: Optional[ImageUrls] = None
    image_url: Optional[ImageUrls] = None
    wheelchair_accessible: Optional[bool] = None
    wifi: Optional[bool] = None
    outdoor_seating: Optional[bool] = None
    save_food_and_money: Optional[bool] = None
    place_type: Optional[PlaceType] = None
    mall: Optional[PlaceBasicApiDto] = None
    price_main_dish: Optional[PriceMainDishApiDto] = None
    places: List[PlaceBasicApiDto] = field(default_factory=list)
    other_services: List[MallOtherServiceApiDto] = field(default_factory=list)
    floor: Optional[str] = None
    time_zone_dto: Optional[TimeZoneDto] = None
    business_id: Optional[int] = None
    contact: Optional[PlaceContact] = None
    address: Optional[PlaceAddress] = None


class SharingState(str, Enum):
    TEASER = 'Teaser'
    AWARDED = 'Awarded'
    SELF_SHARE = 'SelfShare'
    EXPIRED = 'Expired'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SharePlaceLinkUsedResponse:
    sharing_user: Optional[SharingUser] = None
    place: Optional[PlaceApiDto] = None
    state: Optional[SharingState] = None


class Locale(str, Enum):
    EN_US = 'EnUs'
    NB_NO = 'NbNo'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SharePlaceLinkUsedRequest(IPost):
    share_place_token: Optional[str] = None
    locale: Optional[Locale] = None


Python SharePlaceLinkUsedRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /share/share-place-link-used HTTP/1.1 
Host: unstable-consumer-api.brovs.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	sharePlaceToken: String,
	locale: EnUs
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	sharingUser: 
	{
		firstName: String,
		lastName: String,
		profilePhotoUrl: String
	},
	place: 
	{
		id: 0,
		overview: String,
		name: String,
		longitude: 0,
		latitude: 0,
		claimed: False,
		organizationNumber: String,
		countryCode: String,
		placeState: String,
		followersCount: 0,
		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
				}
			}
		},
		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
							}
						]
					}
				]
			}
		],
		featureData: 
		[
			{
				slug: BarSpeciality,
				label: String
			}
		],
		barSpecialities: 
		[
			{
				slug: String,
				title: String
			}
		],
		barTypes: 
		[
			{
				slug: String,
				title: String
			}
		],
		brands: 
		[
			{
				brand: 
				{
					name: String
				},
				categoryAbsoluteSlugs: 
				[
					String
				],
				placeCustomBrand: 
				{
					name: String
				}
			}
		],
		cuisines: 
		[
			{
				label: String,
				slug: String
			}
		],
		mealTypes: 
		[
			{
				label: String,
				slug: String
			}
		],
		parking: 
		[
			{
				label: String,
				slug: StreetParking
			}
		],
		paymentOptions: 
		[
			{
				label: String,
				slug: Visa
			}
		],
		eatingSuitabilities: 
		[
			{
				label: String,
				slug: String
			}
		],
		takeAways: 
		[
			{
				label: String,
				slug: String
			}
		],
		wearPriceProfiles: 
		[
			{
				slug: String,
				label: String
			}
		],
		menus: 
		[
			{
				name: String,
				url: String,
				position: 0
			}
		],
		logoUrl: 
		{
			preview: String,
			small: String,
			medium: String,
			large: String
		},
		imageUrl: 
		{
			preview: String,
			small: String,
			medium: String,
			large: String
		},
		wheelchairAccessible: False,
		wifi: False,
		outdoorSeating: False,
		saveFoodAndMoney: False,
		placeType: Mall,
		mall: 
		{
			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
		},
		priceMainDish: 
		{
			title: String,
			slug: Value
		},
		places: 
		[
			{
				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
			}
		],
		otherServices: 
		[
			{
				serviceName: String,
				floor: String
			}
		],
		floor: String,
		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
		}
	},
	state: Teaser
}