import {z} from 'zod' export type CreateApiNetworksReportingConversionsArgs = {page?: number | undefined, page_size?: number | undefined, body: {currency_id?: string | undefined, from: string, query?: ({filters?: ({filter_id_value?: string | undefined, resource_type?: ('offer' | 'offer_group' | 'affiliate' | 'advertiser' | 'offer_creative' | 'transaction_id' | 'campaign' | 'billing_frequency' | 'business_unit' | 'label' | 'category' | 'sub1' | 'sub2' | 'sub3' | 'sub4' | 'sub5' | 'sub6' | 'sub7' | 'sub8' | 'sub9' | 'sub10' | 'source_id' | 'country' | 'account_manager' | 'affiliate_manager' | 'status' | 'offer_url' | 'currency_id' | 'affiliate_tier' | 'adv1' | 'adv2' | 'adv3' | 'adv4' | 'adv5' | 'adv6' | 'adv7' | 'adv8' | 'adv9' | 'adv10' | 'browser' | 'carrier' | 'city' | 'coupon_code' | 'dma' | 'date' | 'hourly' | 'device_brand' | 'device_type' | 'hour' | 'isp' | 'language' | 'month' | 'os_version' | 'payout_amount' | 'payout_type' | 'platform' | 'project_id' | 'referrer' | 'region' | 'revenue_amount' | 'revenue_type' | 'week' | 'conversion_id' | 'order_id' | 'tracking_domain' | 'offer_payout_revenue_id' | 'country_code' | 'advertiser_billing_frequency' | 'error_code') | undefined}) | undefined, search_terms?: ({search_type?: ('transaction_id' | 'sub_1' | 'sub_2' | 'sub_3' | 'sub_4' | 'sub_5' | 'adv_1' | 'adv_2' | 'adv_3' | 'adv_4' | 'adv_5' | 'source_id' | 'user_ip' | 'user_agent' | 'order_id' | 'country' | 'region' | 'city' | 'status' | 'is_scrub' | 'email' | 'coupon_code' | 'event_name') | undefined, value?: string | undefined}) | undefined}) | undefined, show_conversions: boolean, show_events: boolean, show_only_ct?: boolean | undefined, show_only_fail_traffic?: boolean | undefined, show_only_scrub?: boolean | undefined, show_only_vt?: boolean | undefined, timezone_id: number, to: string}}; export type CreateApiNetworksReportingConversionsOptions = {baseUrl?: string | undefined, APIKey?: string | undefined, fetch?: typeof fetch | undefined}; export const createApiNetworksReportingConversionsResponse = z.object({conversions: z.array(z.object({adv1: z.string().optional(), adv2: z.string().optional(), adv3: z.string().optional(), adv4: z.string().optional(), adv5: z.string().optional(), adv6: z.string().optional(), adv7: z.string().optional(), adv8: z.string().optional(), adv9: z.string().optional(), adv10: z.string().optional(), android_id: z.string().optional(), android_id_md5: z.string().optional(), android_id_sha1: z.string().optional(), app_id: z.string().optional(), brand: z.string().optional(), browser: z.string().optional(), carrier: z.string().optional(), city: z.string().optional(), click_unix_timestamp: z.number().int().optional(), conversion_id: z.string().optional(), conversion_unix_timestamp: z.number().int().optional(), conversion_user_ip: z.string().optional(), country: z.string().optional(), coupon_code: z.string().optional(), currency_id: z.string().optional(), device_model: z.string().optional(), device_type: z.string().optional(), dma: z.number().int().optional(), email: z.string().optional(), error_code: z.number().int().optional(), error_message: z.string().optional(), event: z.string().optional(), google_ad_id: z.string().optional(), google_ad_id_md5: z.string().optional(), google_ad_id_sha1: z.string().optional(), http_user_agent: z.string().optional(), idfa: z.string().optional(), idfa_md5: z.string().optional(), idfa_sha1: z.string().optional(), is_event: z.boolean().optional(), is_scrub: z.boolean().optional(), is_view_through: z.boolean().optional(), isp: z.string().optional(), language: z.string().optional(), network_offer_payout_revenue_id: z.number().int().optional(), notes: z.string().optional(), order_id: z.string().optional(), os_version: z.string().optional(), payout: z.number().optional(), payout_type: z.string().optional(), platform: z.string().optional(), previous_network_offer_id: z.number().int().optional(), referer: z.string().optional(), region: z.string().optional(), relationship: z.object({account_manager: z.object({account_status: z.enum(["active", "inactive", "suspended", "pending"]).optional(), first_name: z.string().optional(), full_name: z.string().optional(), last_name: z.string().optional(), network_employee_id: z.number().int().optional(), network_id: z.number().int().optional()}).optional(), adv_global_event: z.object({advertiser_id: z.number().int().optional(), entry_name: z.string().optional(), network_advertiser_global_event_id: z.number().int().optional(), network_id: z.number().int().optional()}).optional(), advertiser: z.object({account_status: z.enum(["active", "inactive", "pending", "suspended"]).optional(), name: z.string().optional(), network_advertiser_id: z.number().int().optional(), network_id: z.number().int().optional()}).optional(), affiliate: z.object({account_status: z.enum(["active", "inactive", "pending", "suspended"]).optional(), name: z.string().optional(), network_affiliate_id: z.number().int().optional(), network_id: z.number().int().optional()}).optional(), affiliate_manager: z.object({account_status: z.enum(["active", "inactive", "suspended", "pending"]).optional(), first_name: z.string().optional(), full_name: z.string().optional(), last_name: z.string().optional(), network_employee_id: z.number().int().optional(), network_id: z.number().int().optional()}).optional(), affiliate_tier: z.object({name: z.string().optional(), network_affiliate_tier_id: z.number().int().optional(), network_id: z.number().int().optional(), status: z.enum(["active", "paused", "deleted"]).optional()}).optional(), attribution_method: z.enum(["cookie", "transaction_id", "coupon_code", "email", "fingerprinting", "manual_upload", "clickless", "skad", "csv_upload", "webhook", "integration", "user_management"]).optional(), campaign: z.object({campaign_name: z.string().optional(), campaign_status: z.enum(["active", "paused", "deleted"]).optional(), network_campaign_id: z.number().int().optional(), network_id: z.number().int().optional()}).optional(), candidate_clicks: z.object({relationship: z.object({affiliate: z.object({account_status: z.enum(["active", "inactive", "pending", "suspended"]).optional(), name: z.string().optional(), network_affiliate_id: z.number().int().optional(), network_id: z.number().int().optional()}).optional()}).optional(), transaction_id: z.string().optional(), unix_timestamp: z.number().int().optional()}).optional(), click_attribution_method: z.string().optional(), conversion_referer: z.string().optional(), custom_payout_revenue: z.object({name: z.string().optional(), network_custom_payout_revenue_setting_id: z.number().int().optional(), network_id: z.number().int().optional()}).optional(), events_count: z.number().int().optional(), is_enforce_caps: z.boolean().optional(), line_items_custom_payout_revenue_settings: z.object({name: z.string().optional(), network_custom_payout_revenue_setting_id: z.number().int().optional(), network_id: z.number().int().optional()}).optional(), offer: z.object({name: z.string().optional(), network_id: z.number().int().optional(), network_offer_id: z.number().int().optional(), offer_status: z.enum(["active", "paused", "pending", "deleted"]).optional()}).optional(), offer_group: z.object({name: z.string().optional(), network_advertiser_id: z.number().int().optional(), network_id: z.number().int().optional(), network_offer_group_id: z.number().int().optional(), offer_count: z.number().int().optional(), offer_group_status: z.enum(["active", "paused", "deleted"]).optional()}).optional(), offer_url: z.object({name: z.string().optional(), network_id: z.number().int().optional(), network_offer_id: z.number().int().optional(), network_offer_url_id: z.number().int().optional()}).optional(), on_hold_snapshots: z.object({initiator: z.enum(["manual", "conversion_processing", "conversion_update", "csv"]).optional(), network_employee: z.object({account_status: z.enum(["active", "inactive", "suspended", "pending"]).optional(), first_name: z.string().optional(), full_name: z.string().optional(), last_name: z.string().optional(), network_employee_id: z.number().int().optional(), network_id: z.number().int().optional()}).optional(), network_id: z.number().int().optional(), on_hold_conversion_history_snapshot_id: z.number().int().optional(), on_hold_conversion_id: z.string().optional(), snapshot_type: z.enum(["status", "payout_revenue"]).optional(), status: z.enum(["on_hold", "approved", "rejected"]).optional(), unix_timestamp: z.number().int().optional()}).optional(), order_line_items: z.object({discount: z.number().optional(), name: z.string().optional(), network_order_line_item_id: z.number().int().optional(), order_id: z.number().int().optional(), order_number: z.number().int().optional(), price: z.number().optional(), product_id: z.number().int().optional(), quantity: z.number().int().optional(), sku: z.string().optional()}).optional(), postback_control: z.object({name: z.string().optional(), network_id: z.number().int().optional(), network_postback_control_id: z.number().int().optional()}).optional(), redirect_url: z.string().optional(), referer: z.string().optional(), snapshots: z.object({conversion_history_snapshot_id: z.number().int().optional(), conversion_id: z.string().optional(), error_code: z.number().int().optional(), initiator: z.enum(["manual", "csv", "bulk_payout_adjustment", "twenty_four_metrics", "reversal", "avow", "retroactive_tiered_commission"]).optional(), network_employee: z.object({account_status: z.enum(["active", "inactive", "suspended", "pending"]).optional(), first_name: z.string().optional(), full_name: z.string().optional(), last_name: z.string().optional(), network_employee_id: z.number().int().optional(), network_id: z.number().int().optional()}).optional(), network_id: z.number().int().optional(), payout: z.number().optional(), revenue: z.number().optional(), sale_amount: z.number().optional(), snapshot_type: z.enum(["status", "payout_revenue", "sale_amount", "payout_revenue_and_sale_amount"]).optional(), status: z.enum(["approved", "rejected", "pending", "invalid"]).optional(), unix_timestamp: z.number().int().optional()}).optional(), tiered_commission: z.object({name: z.string().optional(), network_id: z.number().int().optional(), network_tiered_commission_id: z.number().int().optional()}).optional(), unix_timestamp_postback: z.number().int().optional(), usm_data: z.object({}).nullable().optional(), query_parameters: z.object({}).optional()}).optional(), revenue: z.number().optional(), revenue_type: z.string().optional(), sale_amount: z.number().optional(), session_user_ip: z.string().optional(), source_id: z.string().optional(), status: z.enum(["approved", "rejected", "pending", "invalid"]).optional(), sub1: z.string().optional(), sub2: z.string().optional(), sub3: z.string().optional(), sub4: z.string().optional(), sub5: z.string().optional(), sub6: z.string().optional(), sub7: z.string().optional(), sub8: z.string().optional(), sub9: z.string().optional(), sub10: z.string().optional(), transaction_id: z.string().optional(), url: z.string().optional()})).optional(), paging: z.object({page: z.number().int().optional(), page_size: z.number().int().optional(), total_count: z.number().int().optional()}).optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Get Conversion Report * * POST /networks/reporting/conversions */ export const createApiNetworksReportingConversions = async (args: CreateApiNetworksReportingConversionsArgs, options?: CreateApiNetworksReportingConversionsOptions) => { const {baseUrl = "https://api.eflow.team/v1", fetch: fetchFn = fetch, APIKey} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (args.page != null) query.append("page", String(args.page)) if (args.page_size != null) query.append("page_size", String(args.page_size)) if (APIKey !== undefined) headers.set("X-Eflow-Api-Key", APIKey) const url = `${baseUrl.replace(/\/+$/, '')}/networks/reporting/conversions${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 validateResponse(createApiNetworksReportingConversionsResponse, await res.json()) };