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 GetStoreDetailsEventResult = {superRegion?: string | undefined, storeDetails?: Array | undefined}; export type CreateApiV1MarketIntelStoreDetailsArgs = {'X-Event-Id'?: string | undefined, body: GetStoreDetailsEventResult}; export type CreateApiV1MarketIntelStoreDetailsOptions = {baseUrl?: string | undefined, OAuth20?: string | undefined, fetch?: typeof fetch | undefined}; /** * Report store details updates * * POST /v1/market-intel/store-details */ export const createApiV1MarketIntelStoreDetails = async (args: CreateApiV1MarketIntelStoreDetailsArgs, options?: CreateApiV1MarketIntelStoreDetailsOptions) => { 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/store-details${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 };