import {z} from 'zod' export type CreateApiV1LinkedinLiveFetchCompanySingleArgs = {body: {apiKey: string, type: 'slug' | 'orgId' | 'liUrl', value: string, getHistoricalHeadcount?: boolean | undefined}}; export type CreateApiV1LinkedinLiveFetchCompanySingleOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; export const createApiV1LinkedinLiveFetchCompanySingleResponse = z.object({output: z.object({company: z.object({headline: z.string().nullable().optional(), description: z.string().nullable().optional(), employee_count: z.number().nullable().optional(), follower_count: z.number().nullable().optional(), founded_year: z.number().nullable().optional(), industries: z.array(z.object({id: z.string(), name: z.string(), primary: z.boolean().nullable().optional()})).nullable().optional(), inferred_location: z.object({street_address: z.string().nullable().optional(), neighborhood: z.string().nullable().optional(), city: z.string().nullable().optional(), state_name: z.string().nullable().optional(), state_code: z.string().nullable().optional(), county: z.string().nullable().optional(), postal_code: z.string().nullable().optional(), country_code: z.string().nullable().optional(), country_name: z.string().nullable().optional(), coordinates: z.object({lat: z.number(), lon: z.number()}).nullable().optional(), timezone: z.string().nullable().optional(), full_address: z.string().nullable().optional(), formatted_address: z.string().nullable().optional()}).nullable().optional(), linkedin_url: z.string().nullable().optional(), locations: z.array(z.object({address: z.string().nullable().optional(), is_primary: z.boolean().nullable().optional(), location: z.object({street_address: z.string().nullable().optional(), neighborhood: z.string().nullable().optional(), city: z.string().nullable().optional(), state_name: z.string().nullable().optional(), state_code: z.string().nullable().optional(), county: z.string().nullable().optional(), postal_code: z.string().nullable().optional(), country_code: z.string().nullable().optional(), country_name: z.string().nullable().optional(), coordinates: z.object({lat: z.number(), lon: z.number()}).nullable().optional(), timezone: z.string().nullable().optional(), full_address: z.string().nullable().optional(), formatted_address: z.string().nullable().optional()}).nullable().optional()})).nullable().optional(), naics_codes: z.array(z.string()).nullable().optional(), name: z.string().nullable().optional(), org_id: z.string().nullable().optional(), slug: z.string(), specialties: z.array(z.string()).nullable().optional(), ticker: z.string().nullable().optional(), type: z.string().nullable().optional(), domain: z.string().nullable().optional(), website: z.string().nullable().optional(), est_employee_count_lower_bound: z.number().nullable().optional(), est_employee_count_upper_bound: z.number().nullable().optional(), standardized_industries: z.array(z.string()).nullable().optional(), locations_stats: z.object({USA: z.number().optional(), GBR: z.number().optional(), FRA: z.number().optional(), IND: z.number().optional(), BRA: z.number().optional(), DEU: z.number().optional(), ESP: z.number().optional(), CAN: z.number().optional(), AUS: z.number().optional(), NLD: z.number().optional(), ITA: z.number().optional(), ZAF: z.number().optional(), BEL: z.number().optional(), CHN: z.number().optional(), TUR: z.number().optional(), MEX: z.number().optional(), CHE: z.number().optional(), NOR: z.number().optional(), ARE: z.number().optional(), SWE: z.number().optional(), POL: z.number().optional(), IDN: z.number().optional(), ARG: z.number().optional(), PRT: z.number().optional(), COL: z.number().optional(), CHL: z.number().optional(), PAK: z.number().optional(), DNK: z.number().optional(), JPN: z.number().optional(), NGA: z.number().optional(), SGP: z.number().optional(), PER: z.number().optional(), NZL: z.number().optional(), AUT: z.number().optional(), IRL: z.number().optional(), MYS: z.number().optional(), BGD: z.number().optional(), EGY: z.number().optional(), ISR: z.number().optional(), SAU: z.number().optional(), PHL: z.number().optional(), FIN: z.number().optional(), IRN: z.number().optional(), ROU: z.number().optional(), CZE: z.number().optional(), GRC: z.number().optional(), HKG: z.number().optional(), HUN: z.number().optional(), KEN: z.number().optional(), MAR: z.number().optional(), VNM: z.number().optional(), RUS: z.number().optional(), UKR: z.number().optional(), ECU: z.number().optional(), THA: z.number().optional(), LKA: z.number().optional(), KOR: z.number().optional(), BGR: z.number().optional(), GHA: z.number().optional(), SRB: z.number().optional(), TWN: z.number().optional(), HRV: z.number().optional(), LTU: z.number().optional(), PRI: z.number().optional(), SVK: z.number().optional(), TUN: z.number().optional(), EST: z.number().optional(), VEN: z.number().optional(), CRI: z.number().optional(), PAN: z.number().optional(), URY: z.number().optional(), LBN: z.number().optional(), LUX: z.number().optional(), CYP: z.number().optional(), NPL: z.number().optional(), JOR: z.number().optional(), SVN: z.number().optional(), MTQ: z.number().optional(), QAT: z.number().optional(), GLP: z.number().optional(), UGA: z.number().optional(), DZA: z.number().optional(), GTM: z.number().optional(), CMR: z.number().optional(), LVA: z.number().optional(), DOM: z.number().optional(), AZE: z.number().optional(), GEO: z.number().optional(), SEN: z.number().optional(), TZA: z.number().optional(), ZWE: z.number().optional(), KWT: z.number().optional(), MLT: z.number().optional(), OMN: z.number().optional(), BOL: z.number().optional(), SLV: z.number().optional(), ARM: z.number().optional(), PRY: z.number().optional(), IRQ: z.number().optional(), KHM: z.number().optional(), BIH: z.number().optional(), AGO: z.number().optional(), BHR: z.number().optional(), ALB: z.number().optional(), KAZ: z.number().optional(), CIV: z.number().optional(), ETH: z.number().optional(), MUS: z.number().optional(), ZMB: z.number().optional(), MKD: z.number().optional(), COD: z.number().optional(), BLR: z.number().optional(), MOZ: z.number().optional(), REU: z.number().optional(), TTO: z.number().optional(), GUF: z.number().optional(), ISL: z.number().optional(), MMR: z.number().optional(), HND: z.number().optional(), RWA: z.number().optional(), MDG: z.number().optional(), BEN: z.number().optional(), UZB: z.number().optional(), NAM: z.number().optional(), BWA: z.number().optional(), MDA: z.number().optional(), JEY: z.number().optional(), NIC: z.number().optional(), SDN: z.number().optional(), JAM: z.number().optional(), IMN: z.number().optional(), BFA: z.number().optional(), MNG: z.number().optional(), MNE: z.number().optional(), MCO: z.number().optional(), TGO: z.number().optional(), AFG: z.number().optional(), LBY: z.number().optional(), XKX: z.number().optional(), CYM: z.number().optional(), MWI: z.number().optional(), SOM: z.number().optional(), PNG: z.number().optional(), MDV: z.number().optional(), MLI: z.number().optional(), GIN: z.number().optional(), PSE: z.number().optional(), GAB: z.number().optional(), LIE: z.number().optional(), HTI: z.number().optional(), SYR: z.number().optional(), BRB: z.number().optional(), YEM: z.number().optional(), GGY: z.number().optional(), NCL: z.number().optional(), AND: z.number().optional(), SUR: z.number().optional(), MYT: z.number().optional(), KGZ: z.number().optional(), BHS: z.number().optional(), GIB: z.number().optional(), COG: z.number().optional(), FJI: z.number().optional(), BLM: z.number().optional(), CUW: z.number().optional(), CUB: z.number().optional(), SLE: z.number().optional(), BLZ: z.number().optional(), NER: z.number().optional(), LBR: z.number().optional(), VIR: z.number().optional(), PYF: z.number().optional(), GUM: z.number().optional(), MRT: z.number().optional(), ABW: z.number().optional(), SYC: z.number().optional(), GUY: z.number().optional(), LSO: z.number().optional(), SWZ: z.number().optional(), SSD: z.number().optional(), LCA: z.number().optional(), MAC: z.number().optional(), SMR: z.number().optional(), LAO: z.number().optional(), BRN: z.number().optional(), TCD: z.number().optional(), BMU: z.number().optional(), VGB: z.number().optional(), PRK: z.number().optional(), BTN: z.number().optional(), BDI: z.number().optional(), FRO: z.number().optional(), TJK: z.number().optional(), GMB: z.number().optional(), STP: z.number().optional(), ANT: z.number().optional(), VCT: z.number().optional(), DJI: z.number().optional(), CPV: z.number().optional(), TKM: z.number().optional(), ATG: z.number().optional(), TCA: z.number().optional(), KNA: z.number().optional(), GRD: z.number().optional(), ASM: z.number().optional(), VUT: z.number().optional(), GNQ: z.number().optional(), GRL: z.number().optional(), SXM: z.number().optional(), MNP: z.number().optional(), COM: z.number().optional(), TLS: z.number().optional(), SJM: z.number().optional(), CAF: z.number().optional(), DMA: z.number().optional(), MAF: z.number().optional(), WSM: z.number().optional(), BES: z.number().optional(), MHL: z.number().optional(), AIA: z.number().optional(), TON: z.number().optional(), COK: z.number().optional(), SLB: z.number().optional(), SPM: z.number().optional(), GNB: z.number().optional(), ATA: z.number().optional(), TUV: z.number().optional(), ALA: z.number().optional(), IOT: z.number().optional(), ERI: z.number().optional(), PLW: z.number().optional(), FSM: z.number().optional(), NRU: z.number().optional(), PCN: z.number().optional(), FLK: z.number().optional(), MSR: z.number().optional(), VAT: z.number().optional(), KIR: z.number().optional(), SHN: z.number().optional(), NIU: z.number().optional(), WLF: z.number().optional(), HMD: z.number().optional(), CXR: z.number().optional(), NFK: z.number().optional(), ATF: z.number().optional(), CCK: z.number().optional(), SGS: z.number().optional(), BVT: z.number().optional(), UMI: z.number().optional(), ESH: z.number().optional(), TKL: z.number().optional(), "X-SOUTH_ASIA": z.number().optional(), "X-SOUTH_EAST_EUROPE": z.number().optional(), "X-NORTHERN_AFRICA": z.number().optional(), "X-PACIFIC": z.number().optional(), "X-SOUTH_WEST_EUROPE": z.number().optional(), "X-SOUTHERN_AFRICA": z.number().optional(), "X-WEST_INDIES": z.number().optional(), "X-SOUTH_AMERICA": z.number().optional(), "X-SOUTH_WEST_ASIA": z.number().optional(), "X-CENTRAL_EUROPE": z.number().optional(), "X-EASTERN_EUROPE": z.number().optional(), "X-WESTERN_EUROPE": z.number().optional(), "X-CENTRAL_AMERICA": z.number().optional(), "X-WESTERN_AFRICA": z.number().optional(), "X-SOUTH_ATLANTIC_OCEAN": z.number().optional(), "X-SOUTH_EAST_ASIA": z.number().optional(), "X-CENTRAL_AFRICA": z.number().optional(), "X-NORTH_AMERICA": z.number().optional(), "X-EAST_ASIA": z.number().optional(), "X-NORTHERN_EUROPE": z.number().optional(), "X-EASTERN_AFRICA": z.number().optional(), "X-SOUTHERN_INDIAN_OCEAN": z.number().optional(), "X-SOUTHERN_EUROPE": z.number().optional(), "X-CENTRAL_ASIA": z.number().optional(), "X-NORTHERN_ASIA": z.number().optional(), "X-ASIA": z.number().optional(), "X-EUROPE": z.number().optional(), "X-AFRICA": z.number().optional(), "X-OCEANIA": z.number().optional(), "X-AMERICAS": z.number().optional(), "X-ANTARCTICA": z.number().optional(), "X-ATLANTIC_OCEAN": z.number().optional(), "X-INDIAN_OCEAN": z.number().optional(), "X-MIDDLE_EAST": z.number().optional(), "X-MENA": z.number().optional(), "X-EMEA": z.number().optional(), "X-EUROPEAN_UNION": z.number().optional(), "X-EFTA": z.number().optional(), "X-APAC": z.number().optional(), "X-LATAM": z.number().optional(), "X-ANGLOSPHERE": z.number().optional(), "X-DACH": z.number().optional(), "X-NORDICS": z.number().optional(), "X-BENELUX": z.number().optional(), "X-GCC": z.number().optional(), "X-BRICS": z.number().optional(), "X-G20": z.number().optional(), "X-OECD": z.number().optional(), "X-SANCTIONED": z.number().optional()}).nullable().optional(), logo_url: z.string().nullable().optional(), historical_headcount: z.object({latest_snapshot_date: z.string(), snapshots: z.array(z.object({date: z.string(), employees: z.number().int()})), growth: z.object({"1m": z.object({percent: z.number(), quantity: z.number().int()}).nullable().optional(), "2m": z.object({percent: z.number(), quantity: z.number().int()}).nullable().optional(), "3m": z.object({percent: z.number(), quantity: z.number().int()}).nullable().optional(), "6m": z.object({percent: z.number(), quantity: z.number().int()}).nullable().optional(), "12m": z.object({percent: z.number(), quantity: z.number().int()}).nullable().optional(), "18m": z.object({percent: z.number(), quantity: z.number().int()}).nullable().optional(), "24m": z.object({percent: z.number(), quantity: z.number().int()}).nullable().optional(), "36m": z.object({percent: z.number(), quantity: z.number().int()}).nullable().optional()})}).nullable().optional(), revenue_usd_lower_bound: z.string().nullable().optional(), revenue_usd_upper_bound: z.string().nullable().optional()}), isCached404: z.boolean().nullable().optional()}), chargeInfo: z.union([z.object({method: z.literal("charged-now"), creditsCharged: z.number(), lowCreditAlert: z.object({getMoreCreditsUrl: z.string(), message: z.string(), availableCredits: z.number()}).nullable().optional()}), z.object({method: z.literal("charging-later"), message: z.string(), lowCreditAlert: z.object({getMoreCreditsUrl: z.string(), message: z.string(), availableCredits: z.number()}).nullable().optional()}), z.object({method: z.literal("charged-for-async-process"), creditsCharged: z.number(), message: z.string(), lowCreditAlert: z.object({getMoreCreditsUrl: z.string(), message: z.string(), availableCredits: z.number()}).nullable().optional()}), z.object({method: z.literal("free"), message: z.string(), lowCreditAlert: z.object({getMoreCreditsUrl: z.string(), message: z.string(), availableCredits: z.number()}).nullable().optional()}), z.object({method: z.literal("credits-refunded"), creditsRefunded: z.number(), message: z.string(), lowCreditAlert: z.object({getMoreCreditsUrl: z.string(), message: z.string(), availableCredits: z.number()}).nullable().optional()})]), warnings: z.array(z.object({field: z.string(), message: z.string()})).nullable().optional(), advice: z.array(z.string()).nullable().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 }; /** * Live fetch LinkedIn company * * POST /v1/linkedin-live-fetch/company/single */ export const createApiV1LinkedinLiveFetchCompanySingle = async (args: CreateApiV1LinkedinLiveFetchCompanySingleArgs, options?: CreateApiV1LinkedinLiveFetchCompanySingleOptions) => { const {baseUrl = "https://api.fiber.ai", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") const url = `${baseUrl.replace(/\/+$/, '')}/v1/linkedin-live-fetch/company/single${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(createApiV1LinkedinLiveFetchCompanySingleResponse, await res.json()) };