export type Location = {latitude: number, longitude: number} | null; export type Address = {fullAddress?: (string | null) | undefined, postalCode?: string | undefined, city?: string | undefined, state?: string | undefined, countryCode?: string | undefined, addressLines?: (Array | null) | undefined, linesOfAddress?: (Array | null) | undefined, location?: Location | undefined} | null; export type MarketintelGeoLocationInformation = {regionId?: string | undefined, superRegion?: string | undefined, h3Index?: string | undefined, searchText?: (string | null) | undefined, address?: Address | undefined}; export type MarketintelStoreMenu = {category?: (string | null) | undefined, ids?: Array | undefined, location?: Record | undefined}; export type MarketintelTimeRange = {start: string, end: string}; export type MarketintelRegularHours = {days: Array<'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY'>, timeRanges: Array}; export type MarketintelSpecialHours = {date: string, timeRanges: Array, type: 'OPEN' | 'CLOSED'}; export type MarketintelHoursData = {timeZone: unknown, regularHours: Array, specialHours: Array}; export type MarketintelStoreRating = {ratingScore?: (number | null) | undefined, estimatedRatingCount?: (number | null) | undefined, displayRatingCount?: (string | null) | undefined}; export type MarketintelCoordinates = {coordinatesType?: ('WGS84' | 'GCJ02') | undefined, location?: Location | undefined}; export type MarketintelStoreSales = {periodType?: (string | null) | undefined, numberOfSales?: (number | null) | undefined, displayNumberOfSales?: (string | null) | undefined}; export type Money = {currencyCode: string, amount: number}; export type MarketintelStorePromotion = {displayName?: (string | null) | undefined, promotionType?: (string | null) | undefined, campaignType?: (string | null) | undefined, promotionId?: (string | null) | undefined}; export type MarketintelStoreChain = {chainId?: (string | null) | undefined, chainName?: (string | null) | undefined}; export type MarketintelStoreDeliveryInformation = {minDeliveryBasketSize?: Money | undefined, deliveryFee?: Money | undefined, deliveryType?: (string | null) | undefined, deliveryTimeMinutes?: (number | null) | undefined}; export type MarketintelStorePriceLevel = {priceLevel?: (number | null) | undefined, priceLevelName?: (string | null) | undefined}; export type MarketintelStoreDetails = {regionId?: (string | null) | undefined, provider?: string | undefined, id?: string | undefined, storeUrl?: (string | null) | undefined, location?: MarketintelGeoLocationInformation | undefined, address?: Address | undefined, phoneNumbers?: Array | undefined, storeName?: (string | null) | undefined, menu?: MarketintelStoreMenu | undefined, storeHours?: MarketintelHoursData | undefined, tags?: Array | undefined, storeBannerPhotoUrl?: (string | null) | undefined, storeRating?: MarketintelStoreRating | undefined, coordinates?: MarketintelCoordinates | undefined, storeSales?: MarketintelStoreSales | undefined, avgBasketAmount?: Money | undefined, storePromotions?: Array | undefined, storeChain?: MarketintelStoreChain | undefined, storeDeliveryInformation?: MarketintelStoreDeliveryInformation | undefined, logoPhotoUrl?: (string | null) | undefined, priceLevel?: MarketintelStorePriceLevel | undefined}; export type MarketintelLocationBasedInformation = {estimatedDeliveryTimeInSeconds?: (number | null) | undefined, distanceInMeters?: (number | null) | undefined}; export type DiscoveredStore = {storeDetails?: MarketintelStoreDetails | undefined, locationBasedInformation?: MarketintelLocationBasedInformation | undefined}; export type MarketintelStoreListing = {category?: (string | null) | undefined, ids?: Array | undefined, location?: Record | undefined}; export type DiscoverStoresEventResult = {storesDiscovered?: Array | undefined, storeRankings?: Array | undefined}; export type CreateApiV1MarketIntelDiscoveredStoresArgs = {'X-Event-Id'?: string | undefined, body: DiscoverStoresEventResult}; export type CreateApiV1MarketIntelDiscoveredStoresOptions = {baseUrl?: string | undefined, OAuth20?: string | undefined, fetch?: typeof fetch | undefined}; /** * Report stores discovered at geolocations * * POST /v1/market-intel/discovered-stores */ export const createApiV1MarketIntelDiscoveredStores = async (args: CreateApiV1MarketIntelDiscoveredStoresArgs, options?: CreateApiV1MarketIntelDiscoveredStoresOptions) => { const {baseUrl = "https://partners.tryotter.com", fetch: fetchFn = fetch, OAuth20} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") if (args['X-Event-Id'] != null) headers.set("X-Event-Id", String(args['X-Event-Id'])) if (OAuth20 !== undefined) headers.set('authorization', `Bearer ${OAuth20}`) const url = `${baseUrl.replace(/\/+$/, '')}/v1/market-intel/discovered-stores${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return undefined };