export type Price = {value: number, currency?: string | undefined}; export type ProductRequest = {productId: string, productVariantId: string, productImage?: string | undefined, productUrl?: string | undefined, name?: string | undefined, price: Array, quantity?: number | undefined}; export type ExternalIdentifiers = {clientUserId?: string | undefined, customIdentifiers?: (Array<{name?: string | undefined, value?: string | undefined}>) | undefined}; export type EventUser = {phone?: string | undefined, email?: string | undefined, externalIdentifiers?: ExternalIdentifiers | undefined}; export type AddToCartRequest = {items: Array, occurredAt?: string | undefined, user: EventUser}; export type CreateApiEventsEcommerceAddToCartArgs = {body: AddToCartRequest}; export type CreateApiEventsEcommerceAddToCartOptions = {baseUrl?: string | undefined, OAuthFlow?: string | undefined, fetch?: typeof fetch | undefined}; /** * Add to cart * * POST /events/ecommerce/add-to-cart */ export const createApiEventsEcommerceAddToCart = async (args: CreateApiEventsEcommerceAddToCartArgs, options?: CreateApiEventsEcommerceAddToCartOptions) => { const {baseUrl = "https://api.attentivemobile.com/v1", fetch: fetchFn = fetch, OAuthFlow} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") if (OAuthFlow !== undefined) headers.set('authorization', `Bearer ${OAuthFlow}`) const url = `${baseUrl.replace(/\/+$/, '')}/events/ecommerce/add-to-cart${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 };