import {z} from 'zod' export type BusinessesBusinessRequestParamTin = {tin?: string | undefined}; export type SubmittedAddressFull = {full_address: string, reference?: string | undefined}; export type SubmittedAddressComponentState = 'AL' | 'AK' | 'AZ' | 'AR' | 'CA' | 'CO' | 'CT' | 'DE' | 'FL' | 'GA' | 'HI' | 'ID' | 'IL' | 'IN' | 'IA' | 'KS' | 'KY' | 'LA' | 'ME' | 'MD' | 'MA' | 'MI' | 'MN' | 'MS' | 'MO' | 'MT' | 'NE' | 'NV' | 'NH' | 'NJ' | 'NM' | 'NY' | 'NC' | 'ND' | 'OH' | 'OK' | 'OR' | 'PA' | 'RI' | 'SC' | 'SD' | 'TN' | 'TX' | 'UT' | 'VT' | 'VA' | 'WA' | 'WV' | 'WI' | 'WY'; export type SubmittedAddressComponent = {address_line1: string, address_line2?: string | undefined, city: string, state: SubmittedAddressComponentState, postal_code?: string | undefined, country?: string | undefined, reference?: string | undefined}; export type BusinessesBusinessRequestParamAddressesItem = SubmittedAddressFull | SubmittedAddressComponent; export type BusinessesBusinessRequestParamWebsite = {url?: string | undefined}; export type BusinessesBusinessRequestParamPhoneNumbersItem = {phone_number?: string | undefined}; export type SubmittedPerson = {name: string, first_name?: string | undefined, middle_name?: string | undefined, last_name?: string | undefined, name_suffix?: string | undefined, npi?: string | undefined, title?: string | undefined, email?: string | undefined, phone?: string | undefined}; export type BusinessesBusinessRequestParamOrdersItemProduct = 'identity' | 'liens' | 'adverse_media' | 'bankruptcies' | 'business_enrichment' | 'documents' | 'enhanced_screenings' | 'kyc' | 'litigations' | 'people_litigations' | 'people_bankruptcies' | 'people_tax_liens' | 'people_ucc_liens' | 'people_criminal_history' | 'tin' | 'website' | 'business_verification_qualify' | 'business_verification_verify' | 'international_business_verification' | 'tax_liens' | 'ucc_liens' | 'email_risk'; export type BusinessesBusinessRequestParamOrdersItemSubproductsItem = 'articles_of_incorporation' | 'certificate_of_good_standing' | 'articles_of_incorporation_with_fallback' | 'ucc_documents' | 'web_analysis' | 'industry_classification'; export type BusinessesBusinessRequestParamOrdersItemOptions = {person_match?: boolean | undefined}; export type BusinessesBusinessRequestParamOrdersItem = {product: BusinessesBusinessRequestParamOrdersItemProduct, subproducts?: Array | undefined, options?: BusinessesBusinessRequestParamOrdersItemOptions | undefined}; export type InternationalRegistrationRequestParamJurisdictionDetails = {abbr?: string | undefined}; export type InternationalRegistrationRequestParam = {file_number: string, country_code: string, jurisdiction_details?: InternationalRegistrationRequestParamJurisdictionDetails | undefined}; export type CreateApiV1BusinessesArgs = {body: {name: string, tin?: BusinessesBusinessRequestParamTin | undefined, addresses: Array, website?: BusinessesBusinessRequestParamWebsite | undefined, phone_numbers?: Array | undefined, people?: Array | undefined, external_id?: string | undefined, unique_external_id?: string | undefined, tags?: Array | undefined, connection_id?: string | undefined, orders?: Array | undefined, registrations?: Array | undefined}}; export type CreateApiV1BusinessesOptions = {baseUrl?: string | undefined, bearerAuth?: string | undefined, fetch?: typeof fetch | undefined}; export const businessStatus = z.enum(["open", "pending", "in_audit", "in_review", "approved", "rejected"]); export const requesterType = z.enum(["account", "user"]); export const requester = z.object({id: z.string(), type: requesterType, name: z.string(), requested_at: z.string()}); export const businessSupportedDocumentTypesItem = z.enum(["Articles of Incorporation", "Certificate of Good Standing"]); export const reviewObject = z.literal("review"); export const reviewTaskCategory = z.enum(["bankruptcies", "global_watchlists", "name", "people_litigations", "loans", "kyc", "watchlist", "phone", "formation", "people_criminal_history", "adverse_media", "litigations", "tin_type", "address", "sos", "web", "liens", "people_bankruptcies", "industry", "tin", "people", "people_liens", "website", "politically_exposed_persons", "email"]); export const reviewTaskKey = z.enum(["location_frequency", "bankruptcies", "sos_unknown", "address_deliverability", "website_url_discovery", "entity_type", "web_person_verification", "global_watchlists", "website_status", "name", "sos_sub_status", "name_and_entity_type", "sos_active", "profile_status", "phone", "sos_domestic", "address_high_risk", "web_address_verification", "address_property_type", "sos_not_found", "time_in_business", "web_phone_number_verification", "adverse_media", "litigations", "address_verification", "people_litigations", "dba_name", "watchlist", "entity_type_match", "people_criminal_history", "formation_state", "tin_error", "sos_inactive", "address_frequency", "web_business_name_verification", "web_presence_quality", "tin_type", "tin_issued", "sos_domestic_sub_status", "risky_keywords", "address_registered_agent", "sos", "kyc_decision", "ppp_loans", "web_email_address_verification", "tin", "address", "liens", "sos_status", "industry", "sos_match", "address_risk", "website_url_domain_ownership", "website_parked", "domain_redirect", "people_bankruptcies", "politically_exposed_persons", "person_verification", "person_npi_match", "profile_discovery", "address_cmra", "website_verification", "website", "people_liens", "email_risk"]); export const reviewTaskLabel = z.enum(["Politically Exposed Persons", "Web Presence Quality", "KYC", "People Bankruptcies", "Address Risk", "Global Watchlists", "Phone Number", "Third Party Profile Status", "Liens", "Third Party Profiles", "Time in Business", "Web - Email Address", "Risky Keywords", "SOS Domestic Sub‑status", "PPP Loans", "Secretary of State Filings", "Entity Type", "SOS Filings", "People Criminal History", "Adverse Media", "Web - People", "Office Address", "Entity Type Match", "Web - Phone Number", "Business Name", "Bankruptcies", "Industry Classification", "TIN Match", "Watchlists", "People Litigations", "True Industry", "People", "People NPI Match", "DBA Name", "Domain Ownership", "Domain Redirect", "TIN Type", "Website", "TIN Error", "Watchlist", "Litigations", "Web - Business Name", "Name Entity Type", "Formation State", "People Liens", "Web - Office Address", "Email Risk"]); export const reviewTaskStatus = z.enum(["success", "failure", "warning", "neutral"]); export const source = z.object({id: z.string(), type: z.string(), metadata: z.record(z.string(), z.unknown())}); export const reviewTask = z.object({category: reviewTaskCategory, key: reviewTaskKey, label: reviewTaskLabel, message: z.string(), name: z.string(), status: reviewTaskStatus, sub_label: z.string(), sources: z.array(source)}); export const user = z.object({object: z.string(), id: z.string(), name: z.string(), email: z.string(), roles: z.array(z.string()), image_url: z.string().optional(), directory_managed: z.boolean().optional(), last_login_at: z.string().nullable().optional(), settings: z.record(z.string(), z.unknown()).optional(), created_at: z.string()}); export const review = z.object({object: reviewObject, id: z.string(), created_at: z.string(), updated_at: z.string(), completed_at: z.string().nullable().optional(), analyst_read_markdown: z.string().nullable().optional(), analyst_read_generated_at: z.string().nullable().optional(), tasks: z.array(reviewTask), assignee: user.nullable().optional()}); export const tin = z.object({name: z.string().nullable().optional(), mismatch: z.boolean().optional(), unknown: z.boolean().optional(), verified: z.boolean().nullable().optional(), error: z.string().nullable().optional(), updated_at: z.string().optional(), issued: z.boolean().nullable().optional(), verified_by: z.string().nullable().optional(), business_id: z.string(), tin: z.string()}); export const formation = z.object({entity_type: z.string().optional(), formation_date: z.string().optional(), formation_state: z.string().optional(), created_at: z.string(), updated_at: z.string(), sources: z.array(source).optional()}); export const websiteObject = z.literal("website"); export const websiteStatus = z.enum(["online", "offline", "unknown"]); export const websiteDomainRegistrar = z.object({organization: z.string().nullable().optional(), name: z.string().optional(), url: z.string().nullable().optional()}); export const websiteDomain = z.object({domain: z.string().optional(), domain_id: z.string().nullable().optional(), creation_date: z.string().optional(), expiration_date: z.string().optional(), registrar: websiteDomainRegistrar.optional(), redirected: z.boolean().nullable().optional(), url_shortener: z.boolean().nullable().optional(), resolved_url: z.string().nullable().optional()}); export const websitePagesItem = z.object({url: z.string().optional(), category: z.string().optional(), screenshot_url: z.string().optional()}); export const nameType = z.enum(["legal", "dba"]); export const name = z.object({object: z.string(), id: z.string(), name: z.string(), submitted: z.boolean(), type: nameType.nullable().optional(), business_id: z.string(), sources: z.array(source)}); export const websitePhoneNumberObject = z.literal("phone_number"); export const websitePhoneNumber = z.object({object: websitePhoneNumberObject.optional(), id: z.string().optional(), number: z.string().optional(), contact_type: z.string().nullable().optional(), recommended: z.boolean().nullable().optional(), submitted: z.boolean().optional(), sources: z.array(source).nullable().optional()}); export const websiteAddressesItem = z.object({object: z.string().optional(), id: z.string().optional(), address_line1: z.string().nullable().optional(), address_line2: z.string().nullable().optional(), city: z.string().nullable().optional(), state: z.string().nullable().optional(), postal_code: z.string().nullable().optional(), full_address: z.string().optional(), submitted: z.boolean().optional(), sources: z.array(source).optional()}); export const websiteEmailAddressesItemObject = z.literal("email_address"); export const websiteEmailAddressesItem = z.object({object: websiteEmailAddressesItemObject.optional(), email: z.string().optional(), id: z.string().optional(), submitted: z.boolean().optional(), sources: z.array(source).optional()}); export const websiteIndicatorType = z.enum(["domain_age", "top_level_domain", "content_diversity", "contact_info", "compliance_info", "page_count", "broken_links", "domain_consistency", "update_frequency", "filler_text", "image_quality", "last_updated", "third_party_profile_links", "us_business_presence", "spelling_and_grammar", "https", "domain_ownership"]); export const websiteIndicatorRating = z.enum(["positive", "negative", "neutral"]); export const websiteIndicator = z.object({type: websiteIndicatorType, name: z.string(), rating: websiteIndicatorRating, value: z.string(), description: z.string()}); export const websiteRatingQualityRating = z.enum(["low", "moderate", "high", "not_available"]); export const websiteRating = z.object({indicators: z.array(websiteIndicator).optional(), quality_rating: websiteRatingQualityRating}); export const website = z.object({object: websiteObject, id: z.string(), url: z.string().nullable(), created_at: z.string(), updated_at: z.string(), status: websiteStatus, http_status_code: z.number().int().nullable().optional(), title: z.string().nullable().optional(), description: z.string().nullable().optional(), domain: websiteDomain.nullable().optional(), pages: z.array(websitePagesItem).optional(), parked: z.boolean().nullable(), submitted: z.boolean(), error: z.string().nullable().optional(), category: z.string().nullable().optional(), platform: z.string().nullable().optional(), posts_summary: z.string().nullable().optional(), reviews_summary: z.string().nullable().optional(), business_id: z.string(), business_name_match: z.boolean(), names: z.array(name).optional(), phone_numbers: z.array(websitePhoneNumber), people: z.array(z.record(z.string(), z.unknown())).nullable().optional(), addresses: z.array(websiteAddressesItem), email_addresses: z.array(websiteEmailAddressesItem).nullable().optional(), rating: websiteRating.nullable().optional()}); export const watchlistAgency = z.object({abbr: z.string(), name: z.string(), org: z.string()}); export const watchlistResultObject = z.literal("watchlist_result"); export const watchlistResultAddressesItem = z.object({full_address: z.string().optional()}); export const watchlistResult = z.object({object: watchlistResultObject, id: z.string(), status: z.string(), entity_name: z.string(), entity_aliases: z.array(z.string()), listed_at: z.string().nullable().optional(), agency_information_url: z.string(), agency_list_url: z.string(), score: z.number().nullable(), addresses: z.array(watchlistResultAddressesItem).optional(), url: z.string().nullable().optional(), list_country: z.string().optional(), list_url: z.string().nullable().optional(), list_region: z.string().optional(), categories: z.array(z.string()).optional()}); export const watchlistSource = z.object({object: z.string(), agency: z.string(), agency_abbr: z.string(), organization: z.string(), title: z.string(), abbr: z.string(), results: z.array(watchlistResult)}); export const watchlist = z.object({object: z.string(), id: z.string(), hit_count: z.number().int(), agencies: z.array(watchlistAgency), lists: z.array(watchlistSource), people: z.array(z.record(z.string(), z.unknown()))}); export const businessRiskObject = z.literal("risk"); export const businessRiskStatus = z.enum(["completed", "unavailable"]); export const businessRiskLevel = z.enum(["low", "moderate", "high", "not_available"]); export const businessRisk = z.object({object: businessRiskObject, status: businessRiskStatus, level: businessRiskLevel.optional(), score: z.number().int().gte(0).lte(100).optional(), latest_assessment_id: z.string().optional(), reason: z.string().optional()}); export const bankruptcyObject = z.literal("bankruptcy"); export const bankruptcyCaseUpdatesItem = z.object({guid: z.string().optional(), pub_date: z.string().optional(), description: z.string().optional()}); export const bankruptcyDebtorsItem = z.object({name: z.string().optional()}); export const bankruptcy = z.object({object: bankruptcyObject, id: z.string(), business_id: z.string(), case_number: z.string(), case_updates: z.array(bankruptcyCaseUpdatesItem), chapter: z.number(), court: z.string(), filing_date: z.string().nullable(), debtors: z.array(bankruptcyDebtorsItem)}); export const certificationObject = z.literal("certification"); export const certificationCertificationType = z.enum(["federal", "self_certified"]); export const certificationExternalSourcesItem = z.object({organization: z.string().optional(), link: z.string().optional()}); export const certification = z.object({object: certificationObject, id: z.string().optional(), business_id: z.string().optional(), created_at: z.string().optional(), updated_at: z.string().optional(), entrance_date: z.string().nullable().optional(), exit_date: z.string().nullable().optional(), certification_id: z.string().nullable().optional(), name: z.string(), key: z.string(), certification_type: certificationCertificationType, external_sources: z.array(certificationExternalSourcesItem)}); export const documentObject = z.literal("document"); export const documentSource = z.object({type: z.string().optional(), id: z.string().optional(), metadata: z.record(z.string(), z.unknown()).optional()}); export const document = z.object({object: documentObject, id: z.string(), document_type: z.string(), filename: z.string(), content_type: z.string(), size: z.number().int(), download_url: z.string(), created_at: z.string(), source: documentSource.optional(), filing_date: z.string().nullable().optional(), metadata: z.record(z.string(), z.unknown()).optional()}); export const lienObject = z.literal("lien"); export const lienType = z.enum(["ucc", "state", "federal", "attachment", "judgment"]); export const lienDebtorsItemType = z.enum(["ORGANIZATION", "INDIVIDUAL", "UNKNOWN", "Business"]); export const lienDebtorsItemAddressesItem = z.object({full_address: z.string().optional(), address_line1: z.string().optional(), address_line2: z.string().nullable().optional(), city: z.string().optional(), state: z.string().optional(), postal_code: z.string().optional()}); export const lienDebtorsItem = z.object({name: z.string().optional(), type: lienDebtorsItemType.optional(), party_type: z.string().optional(), organization_name: z.string().optional(), entity_type: z.string().optional(), first_name: z.string().optional(), last_name: z.string().optional(), addresses: z.array(lienDebtorsItemAddressesItem).optional()}); export const lienSecuredPartiesItemType = z.enum(["ORGANIZATION", "INDIVIDUAL"]); export const lienSecuredPartiesItemAddressesItem = z.object({full_address: z.string().optional(), address_line1: z.string().optional(), address_line2: z.string().nullable().optional(), city: z.string().optional(), state: z.string().optional(), postal_code: z.string().optional()}); export const lienSecuredPartiesItem = z.object({name: z.string().optional(), type: lienSecuredPartiesItemType.optional(), role: z.string().optional(), organization_name: z.string().optional(), addresses: z.array(lienSecuredPartiesItemAddressesItem).optional()}); export const lienState = z.enum(["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY"]); export const lienStatus = z.enum(["created", "pending", "open", "closing", "closed", "unknown", "filed", "failed"]); export const lienCollateralType = z.enum(["Blanket", "Collateral", "Unknown", "All Assets and Receivables", "All Receivables", "All Assets", "Named Assets", "Unavailable"]); export const lienAlternativeDesignation = z.enum(["buyer_seller", "bailee_bailor", "consignee_consignor", "lessee_lessor", "licensee_licensor"]); export const lienStatusCategory = z.enum(["active", "open", "closed", "terminated", "processing", "unknown", "failed"]); export const lien = z.object({object: lienObject, type: lienType, id: z.string(), business_id: z.string(), debtors: z.array(lienDebtorsItem), secured_parties: z.array(lienSecuredPartiesItem), file_number: z.string().nullable(), state: lienState, status: lienStatus, filing_date: z.string().nullable(), updated_date: z.string().nullable().optional(), lapse_date: z.string().nullable().optional(), collateral: z.string().nullable().optional(), collateral_type: lienCollateralType.nullable().optional(), negative_pledge: z.boolean().optional(), confirmation_number: z.string().nullable().optional(), loan_principal_amount_cents: z.number().int().nullable().optional(), source: z.string().nullable().optional(), packet_number: z.string().nullable().optional(), lien_termination: z.record(z.string(), z.unknown()).nullable().optional(), liability_cents: z.number().int().nullable().optional(), alternative_designation: lienAlternativeDesignation.nullable().optional(), status_category: lienStatusCategory, owner_id: z.string(), owner_type: z.string(), filed_by_account: z.boolean().nullable().optional(), documents: z.array(document)}); export const addressState = z.enum(["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY"]); export const addressPropertyType = z.enum(["commercial", "residential"]); export const addressDeliverabilityAnalysisSubType = z.enum(["Deliverable", "Undeliverable", "Unknown"]); export const addressDeliverabilityAnalysisSubKey = z.enum(["deliverable", "undeliverable", "unknown"]); export const addressDeliverabilityAnalysis = z.object({message: z.string().optional(), sub_type: addressDeliverabilityAnalysisSubType.optional(), sub_key: addressDeliverabilityAnalysisSubKey.optional()}); export const addressIndicatorType = z.enum(["valid_us_address", "deliverability", "geographical_location", "registered_agent", "private_mailbox", "location_frequency", "property_type", "virtual_address"]); export const addressIndicatorName = z.enum(["Valid US address", "Commercial registered agent", "Geographical location", "Private mailbox", "Virtual address", "Location frequency", "Deliverability", "Property type"]); export const addressIndicatorRating = z.enum(["positive", "negative", "neutral"]); export const addressIndicator = z.object({type: addressIndicatorType, name: addressIndicatorName, rating: addressIndicatorRating, value: z.string(), description: z.string()}); export const addressRatingRiskRating = z.enum(["low", "moderate", "high", "not_available"]); export const addressRating = z.object({indicators: z.array(addressIndicator).optional(), risk_rating: addressRatingRiskRating}); export const address = z.object({object: z.string(), id: z.string(), address_line1: z.string().nullable().optional(), address_line2: z.string().nullable().optional(), city: z.string().nullable().optional(), state: addressState.nullable().optional(), postal_code: z.string().nullable().optional(), full_address: z.string(), submitted: z.boolean(), latitude: z.string().nullable().optional(), longitude: z.string().nullable().optional(), property_type: addressPropertyType.nullable().optional(), deliverable: z.boolean().optional(), deliverability_analysis: addressDeliverabilityAnalysis.nullable().optional(), street_view_available: z.boolean().nullable().optional(), labels: z.array(z.string()).optional(), references: z.array(z.string()).optional(), created_at: z.string(), updated_at: z.string(), registered_agent_name: z.string().nullable().optional(), cmra: z.boolean().optional(), business_id: z.string(), location_count: z.number().int().nullable().optional(), is_registered_agent: z.boolean().nullable().optional(), sources: z.array(source), rating: addressRating}); export const personObject = z.literal("person"); export const personTitlesItemObject = z.literal("person_title"); export const personTitlesItem = z.object({object: personTitlesItemObject.optional(), title: z.string().optional()}); export const litigationCaseStatus = z.enum(["OPEN", "CLOSED", "UNKNOWN"]); export const judgment = z.object({id: z.string(), litigation_id: z.string(), docket_entry_date: z.string(), text: z.string(), amount_cents: z.number().int().nullable().optional(), created_at: z.string(), updated_at: z.string()}); export const litigationPartiesItemRole = z.enum(["Plaintiff", "Defendant", "Cross-Plaintiff", "Cross-Defendant"]); export const litigationPartiesItem = z.object({id: z.string(), name: z.string(), role: litigationPartiesItemRole, litigation_id: z.string(), created_at: z.string().optional(), updated_at: z.string().optional()}); export const litigation = z.object({object: z.string(), id: z.string(), case_name: z.string(), case_number: z.string(), case_status: litigationCaseStatus, case_type: z.string(), filing_date: z.string(), judgments: z.array(judgment).optional(), jurisdiction: z.string().optional(), jurisdiction_state: z.string().nullable().optional(), party_type: z.string(), parties: z.array(litigationPartiesItem).optional()}); export const criminalHistoryRecordObject = z.literal("criminal_history/record"); export const criminalHistoryRecordPerson = z.object({dob: z.string().nullable().optional()}); export const criminalHistoryCaseObject = z.literal("criminal_history/case"); export const criminalHistoryChargeObject = z.literal("criminal_history/charge"); export const criminalHistoryChargeDispositionsItem = z.object({disposition: z.string().nullable().optional(), disposition_date: z.string().nullable().optional(), disposition_type: z.string().nullable().optional()}); export const criminalHistoryChargeSentencesItem = z.object({details: z.string().optional()}); export const criminalHistoryCharge = z.object({object: criminalHistoryChargeObject, category: z.string().nullable().optional(), charge_type: z.string().nullable().optional(), city: z.string().nullable().optional(), county: z.string().nullable().optional(), description: z.string().nullable().optional(), dispositions: z.array(criminalHistoryChargeDispositionsItem).optional(), legal_code: z.string().nullable().optional(), offense_date: z.string().nullable().optional(), sentences: z.array(criminalHistoryChargeSentencesItem).nullable().optional(), state: z.string().nullable().optional(), subcategory: z.string().nullable().optional(), subsubcategory: z.string().nullable().optional()}); export const criminalHistoryCase = z.object({object: criminalHistoryCaseObject, arrest_date: z.string().nullable().optional(), case_number: z.string().nullable().optional(), case_type: z.string().nullable().optional(), court_county: z.string().nullable().optional(), court_name: z.string().nullable().optional(), file_date: z.string().nullable().optional(), status: z.string().nullable().optional(), title: z.string().nullable().optional(), arresting_agency: z.string().nullable().optional(), charges: z.array(criminalHistoryCharge)}); export const criminalHistoryRecord = z.object({object: criminalHistoryRecordObject, id: z.string(), category: z.string(), state: z.string().nullable().optional(), person: criminalHistoryRecordPerson.optional(), cases: z.array(criminalHistoryCase)}); export const person = z.object({object: personObject.optional(), id: z.string().optional(), name: z.string().optional(), submitted: z.boolean().optional(), npi: z.string().nullable().optional(), business_id: z.string().optional(), titles: z.array(personTitlesItem).optional(), people_bankruptcies: z.array(z.record(z.string(), z.unknown())).optional(), litigations: z.array(litigation).optional(), liens: z.array(lien).optional(), criminal_records: z.array(criminalHistoryRecord).optional(), sources: z.array(source).optional()}); export const phoneNumberObject = z.literal("phone_number"); export const phoneNumber = z.object({object: phoneNumberObject.optional(), id: z.string().optional(), number: z.string().optional(), contact_type: z.string().nullable().optional(), recommended: z.boolean().nullable().optional()}); export const emailAddressObject = z.literal("email_address"); export const emailAddressAddressType = z.enum(["disposable", "free", "private"]); export const emailRatingRiskRating = z.enum(["low", "moderate", "high"]); export const emailIndicatorType = z.enum(["email_validity", "email_deliverability", "email_domain_reputation", "email_domain_configuration", "email_account_activity", "email_data_breach_exposure", "email_address_type"]); export const emailIndicatorRating = z.enum(["positive", "negative", "neutral"]); export const emailIndicator = z.object({type: emailIndicatorType, name: z.string(), rating: emailIndicatorRating, value: z.string(), description: z.string()}); export const emailRating = z.object({risk_rating: emailRatingRiskRating, indicators: z.array(emailIndicator).optional()}); export const emailAddress = z.object({object: emailAddressObject, id: z.string(), email: z.string(), submitted: z.boolean(), sources: z.array(source).optional(), domain: z.string().optional(), valid: z.boolean().optional(), deliverability: z.string().optional(), disposable: z.boolean().optional(), address_type: emailAddressAddressType.optional(), business_id: z.string().optional(), domain_age: z.string().nullable().optional(), first_seen: z.string().nullable().optional(), rating: emailRating.optional()}); export const profileType = z.enum(["facebook", "google", "yelp", "bbb", "linkedin"]); export const profileMetadataReviewsItem = z.object({rating: z.number().optional(), posted_at: z.string().optional()}); export const profileMetadata = z.object({name: z.string().optional(), city: z.string().optional(), state: z.string().optional(), full_address: z.string().optional(), website_urls: z.array(z.string()).optional(), latitude: z.string().optional(), longitude: z.string().optional(), phone_number: z.string().optional(), categories: z.array(z.string()).optional(), reviews: z.array(profileMetadataReviewsItem).optional(), recent_posts: z.array(z.record(z.string(), z.unknown())).optional(), recent_reviews: z.array(z.record(z.string(), z.unknown())).optional()}); export const profile = z.object({object: z.string(), id: z.string(), type: profileType, external_id: z.string().nullable().optional(), url: z.string(), metadata: profileMetadata.optional(), rating: z.number().nullable().optional(), rating_count: z.number().int().nullable().optional()}); export const registrationJurisdictionDetails = z.object({name: z.string().nullable().optional(), abbr: z.string().nullable().optional(), authority: z.string().nullable().optional()}); export const registrationState = z.enum(["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY"]); export const registration = z.object({object: z.string(), id: z.string(), business_id: z.string(), name: z.string(), status: z.string(), sub_status: z.string().nullable().optional(), status_details: z.string().nullable().optional(), jurisdiction: z.string().nullable(), jurisdiction_details: registrationJurisdictionDetails.nullable().optional(), entity_type: z.string().nullable(), file_number: z.string(), country_code: z.string().optional(), addresses: z.array(z.string()).optional(), officers: z.array(z.record(z.string(), z.unknown())).optional(), registered_agent: z.record(z.string(), z.unknown()).nullable().optional(), registration_date: z.string().nullable().optional(), state: registrationState.nullable(), source: z.string().nullable().optional(), submitted: z.boolean().optional()}); export const orderStatus = z.enum(["created", "pending", "audited", "completed", "approved", "rejected"]); export const orderSubproductsItem = z.enum(["Articles of Incorporation", "Certificate of Good Standing", "Articles of Incorporation with Certificate of Good Standing fallback", "ucc_documents", "web_analysis", "industry_classification"]); export const orderProduct = z.enum(["identity", "liens", "adverse_media", "bankruptcies", "business_enrichment", "documents", "enhanced_screenings", "kyc", "litigations", "people_litigations", "people_bankruptcies", "people_tax_liens", "people_ucc_liens", "people_criminal_history", "tin", "website", "business_verification_qualify", "business_verification_verify", "international_business_verification", "tax_liens", "ucc_liens", "email_risk"]); export const orderRequesterType = z.enum(["account", "user", "api_key"]); export const orderRequester = z.object({name: z.string().nullable().optional(), type: orderRequesterType.nullable().optional()}); export const order = z.object({object: z.string(), id: z.string(), status: orderStatus, business_id: z.string(), subproducts: z.array(orderSubproductsItem).optional(), completed_at: z.string().nullable().optional(), monitoring: z.boolean().optional(), product: orderProduct, requester: orderRequester.optional(), created_at: z.string(), updated_at: z.string()}); export const industryClassificationObject = z.literal("industry_classification"); export const industryClassificationStatus = z.enum(["pending", "completed", "failed"]); export const industryClassificationCategoriesItemClassificationSystem = z.enum(["NAICS", "MCC", "Prohibited"]); export const riskProgramFlagProgram = z.enum(["SMRP", "VIRP"]); export const riskProgramFlagTierHarmType = z.enum(["health_safety", "financial", "regulatory_deceptive"]); export const riskProgramFlagTier = z.object({level: z.number().int(), harm_type: riskProgramFlagTierHarmType}); export const riskProgramFlag = z.object({program: riskProgramFlagProgram, program_category: z.string(), tier: riskProgramFlagTier.optional()}); export const industryClassificationCategoriesItem = z.object({classification_system: industryClassificationCategoriesItemClassificationSystem.optional(), name: z.string().optional(), sector: z.string().nullable().optional(), category: z.string().optional(), score: z.string().optional(), high_risk: z.boolean().optional(), naics_codes: z.array(z.string()).optional(), sic_codes: z.array(z.string()).optional(), mcc_codes: z.array(z.string()).optional(), prohibited_labels: z.array(z.string()).nullable().optional(), risk_program_flags: z.array(riskProgramFlag).optional()}); export const industryClassificationWebsiteStatus = z.enum(["online", "offline", "unknown"]); export const industryClassificationWebsite = z.object({status: industryClassificationWebsiteStatus.optional(), parked: z.boolean().optional()}); export const industryClassification = z.object({object: industryClassificationObject, id: z.string(), status: industryClassificationStatus, categories: z.array(industryClassificationCategoriesItem), created_at: z.string(), completed_at: z.string().nullable().optional(), website: industryClassificationWebsite.nullable().optional()}); export const monitorEventTypesItemStatus = z.enum(["active", "unavailable", "pending"]); export const monitorEventTypesItem = z.object({type: z.string().optional(), enabled_at: z.string().nullable().optional(), status: monitorEventTypesItemStatus.optional()}); export const monitor = z.object({object: z.string(), id: z.string(), created_at: z.string(), event_types: z.array(monitorEventTypesItem)}); export const taxExemptOrganization = z.object({object: z.string().optional(), id: z.string().optional(), ein: z.string().optional(), name: z.string().optional(), section: z.string().nullable().optional(), ruling_date: z.string().nullable().optional(), tax_period: z.string().nullable().optional(), revoked_at: z.string().nullable().optional()}); export const fmcsaRegistrationObject = z.literal("fmcsa_registration"); export const fmcsaRegistration = z.object({object: fmcsaRegistrationObject, id: z.string(), dot_number: z.string(), legal_name: z.string(), dba_name: z.string().nullable().optional(), source: z.string(), addresses: z.array(z.string())}); export const loanObject = z.literal("loan"); export const loanDetailsNaicsCode = z.object({code: z.number().int().optional(), title: z.string().optional(), description: z.string().optional()}); export const loanDetails = z.object({gender: z.string().nullable().optional(), veteran: z.string().nullable().optional(), naics_code: loanDetailsNaicsCode.nullable().optional(), non_profit: z.string().nullable().optional(), business_type: z.string().nullable().optional(), jobs_reported: z.string().nullable().optional(), race_ethnicity: z.string().nullable().optional()}); export const loan = z.object({object: loanObject, id: z.string(), issued_date: z.string().nullable().optional(), amount: z.number().nullable().optional(), lender: z.string().nullable().optional(), details: loanDetails.nullable().optional()}); export const policyActionResultPolicyAction = z.object({id: z.string().optional(), action_type: z.string().optional(), options: z.record(z.string(), z.unknown()).optional(), policy_version_id: z.string().optional()}); export const policyActionResult = z.object({object: z.string().optional(), id: z.string().optional(), details: z.record(z.string(), z.unknown()).optional(), executed: z.boolean().optional(), policy_action: policyActionResultPolicyAction.optional()}); export const policyResult = z.object({object: z.string().optional(), id: z.string().optional(), result: z.string().optional(), created_at: z.string().optional(), matched: z.string().nullable().optional(), executed: z.boolean().optional(), name: z.string().nullable().optional(), details: z.record(z.string(), z.unknown()).optional(), owner_id: z.string().optional(), owner_type: z.string().optional(), business_id: z.string().optional(), type_of: z.string().optional(), policy_action_results: z.array(policyActionResult).optional()}); export const politicallyExposedPersonScreeningResultsItemObject = z.literal("politically_exposed_person_screening_result"); export const politicallyExposedPersonScreeningResultsItemHitType = z.enum(["direct", "direct_alias", "association"]); export const politicallyExposedPersonScreeningResultsItem = z.object({object: politicallyExposedPersonScreeningResultsItemObject.optional(), id: z.string().optional(), aliases: z.array(z.string()).optional(), birth_name: z.string().nullable().optional(), birth_place: z.string().nullable().optional(), citizenship_country: z.string().nullable().optional(), dob: z.string().nullable().optional(), employers: z.array(z.string()).optional(), hit_type: politicallyExposedPersonScreeningResultsItemHitType.optional(), memberships: z.array(z.record(z.string(), z.unknown())).optional(), name: z.string().optional(), professional_history: z.array(z.string()).optional(), score: z.string().optional(), source_urls: z.array(z.string()).optional(), stakeholders: z.array(z.record(z.string(), z.unknown())).optional()}); export const politicallyExposedPersonScreeningSettingsMatchScore = z.enum(["LOW", "MEDIUM", "HIGH"]); export const politicallyExposedPersonScreeningSettings = z.object({people: z.string().optional(), match_score: politicallyExposedPersonScreeningSettingsMatchScore.optional()}); export const politicallyExposedPersonScreening = z.object({object: z.string(), id: z.string(), created_at: z.string(), updated_at: z.string(), results: z.array(politicallyExposedPersonScreeningResultsItem), settings: politicallyExposedPersonScreeningSettings.optional()}); export const adverseMediaScreeningResultsItemObject = z.literal("adverse_media_screening_result"); export const adverseMediaScreeningResultsItemItemsItemObject = z.literal("adverse_media_item"); export const adverseMediaScreeningResultsItemItemsItemFlagsRisksItemConfidenceLevel = z.enum(["low", "moderate", "high"]); export const adverseMediaScreeningResultsItemItemsItemFlagsRisksItem = z.object({name: z.string().optional(), confidence_level: adverseMediaScreeningResultsItemItemsItemFlagsRisksItemConfidenceLevel.optional()}); export const adverseMediaScreeningResultsItemItemsItemFlagsSentimentsItemName = z.enum(["positive", "negative", "neutral"]); export const adverseMediaScreeningResultsItemItemsItemFlagsSentimentsItemConfidenceLevel = z.enum(["low", "moderate", "high"]); export const adverseMediaScreeningResultsItemItemsItemFlagsSentimentsItem = z.object({name: adverseMediaScreeningResultsItemItemsItemFlagsSentimentsItemName.optional(), confidence_level: adverseMediaScreeningResultsItemItemsItemFlagsSentimentsItemConfidenceLevel.optional()}); export const adverseMediaScreeningResultsItemItemsItemFlags = z.object({risks: z.array(adverseMediaScreeningResultsItemItemsItemFlagsRisksItem).optional(), sentiments: z.array(adverseMediaScreeningResultsItemItemsItemFlagsSentimentsItem).optional()}); export const adverseMediaScreeningResultsItemItemsItem = z.object({object: adverseMediaScreeningResultsItemItemsItemObject.optional(), source_name: z.string().optional(), title: z.string().optional(), url: z.string().optional(), flags: adverseMediaScreeningResultsItemItemsItemFlags.optional(), created_at: z.string().optional(), updated_at: z.string().optional()}); export const adverseMediaScreeningResultsItem = z.object({object: adverseMediaScreeningResultsItemObject.optional(), id: z.string().optional(), risk_scores: z.record(z.string(), z.string()).optional(), created_at: z.string().optional(), updated_at: z.string().optional(), match_score: z.string().optional(), items: z.array(adverseMediaScreeningResultsItemItemsItem).optional()}); export const adverseMediaScreeningExclusionSettings = z.object({criteria_match_threshold: z.string().optional(), max_people_screened: z.number().int().optional(), max_names_screened: z.number().int().optional(), people: z.array(z.record(z.string(), z.unknown())).optional()}); export const adverseMediaScreening = z.object({object: z.string(), id: z.string(), created_at: z.string(), updated_at: z.string(), results: z.array(adverseMediaScreeningResultsItem), exclusion_settings: adverseMediaScreeningExclusionSettings.optional()}); export const signalRequester = z.object({id: z.string(), type: z.string(), name: z.string()}); export const signalReasonsItemCategory = z.enum(["identification", "verification", "evaluation"]); export const signalReasonsItemCode = z.enum(["I301", "I302", "I304", "I102", "I103", "I107", "I108", "I109", "I111", "I601", "I603", "I201", "I202", "I203", "I204", "V010", "V011", "V101", "V102", "V103", "V104", "V501", "V502", "V503", "V505", "V748", "V749", "V750", "V751", "V752", "V753", "V801", "V1101", "V1201", "V1302", "E500", "E501", "E502", "E503", "E1101", "E1102", "E1201"]); export const signalReasonsItem = z.object({category: signalReasonsItemCategory, group: z.string(), description: z.string(), code: signalReasonsItemCode, importance: z.string().optional()}); export const signal = z.object({object: z.string(), id: z.string(), name: z.string(), tin: z.string().nullable().optional(), external_id: z.string().nullable().optional(), model_slug: z.string().optional(), score: z.string().nullable().optional(), business_id: z.string().nullable().optional(), batch_id: z.string().nullable().optional(), requester: signalRequester.optional(), reasons: z.array(signalReasonsItem).optional(), addresses: z.array(z.string()).optional(), people: z.array(z.string()).optional(), created_at: z.string()}); export const submittedAttributeOrdersItem = z.object({product: z.string().optional()}); export const submittedAttribute = z.object({object: z.string(), name: z.string(), name_derived: z.boolean().optional(), entity_type: z.string().nullable().optional(), addresses: z.array(z.record(z.string(), z.unknown())).optional(), orders: z.array(submittedAttributeOrdersItem).nullable().optional(), people: z.array(z.record(z.string(), z.unknown())).optional(), phone_numbers: z.array(z.record(z.string(), z.unknown())).nullable().optional(), email_addresses: z.array(z.record(z.string(), z.unknown())).nullable().optional(), tags: z.array(z.string()).nullable().optional(), external_id: z.string().nullable().optional(), unique_external_id: z.string().nullable().optional(), tin: z.record(z.string(), z.unknown()).nullable().optional(), website: z.record(z.string(), z.unknown()).nullable().optional(), assignee_id: z.string().nullable().optional(), formation: z.record(z.string(), z.unknown()).nullable().optional(), names: z.array(z.record(z.string(), z.unknown())).nullable().optional(), profiles: z.array(z.record(z.string(), z.unknown())).nullable().optional()}); export const subscription = z.object({object: z.string().optional(), id: z.string().optional()}); export const businessSubscriptionAvailabilityBankruptcy = z.enum(["subscribable", "account_unsubscribable"]); export const businessSubscriptionAvailabilityCertification = z.enum(["subscribable", "account_unsubscribable"]); export const businessSubscriptionAvailabilityRegistration = z.enum(["subscribable", "account_unsubscribable"]); export const businessSubscriptionAvailabilityTin = z.enum(["subscribable", "account_unsubscribable"]); export const businessSubscriptionAvailabilityWatchlistResult = z.enum(["subscribable", "account_unsubscribable"]); export const businessSubscriptionAvailabilityLien = z.enum(["subscribable", "account_unsubscribable"]); export const businessSubscriptionAvailability = z.object({bankruptcy: businessSubscriptionAvailabilityBankruptcy.optional(), certification: businessSubscriptionAvailabilityCertification.optional(), registration: businessSubscriptionAvailabilityRegistration.optional(), tin: businessSubscriptionAvailabilityTin.optional(), watchlist_result: businessSubscriptionAvailabilityWatchlistResult.optional(), lien: businessSubscriptionAvailabilityLien.optional()}); export const business = z.object({object: z.string(), id: z.string(), external_id: z.string().nullable().optional(), unique_external_id: z.string().nullable().optional(), name: z.string(), status: businessStatus, tags: z.array(z.string()).optional(), requester: requester.nullable().optional(), assignee_id: z.string().nullable().optional(), supported_document_types: z.array(businessSupportedDocumentTypesItem).optional(), review: review.nullable().optional(), tin: tin.nullable().optional(), business_batch_id: z.string().nullable().optional(), formation: formation.nullable().optional(), website: website.nullable().optional(), watchlist: watchlist.nullable().optional(), risk: businessRisk.nullable().optional(), bankruptcies: z.array(bankruptcy).optional(), certifications: z.array(certification).optional(), documents: z.array(document).optional(), liens: z.array(lien).optional(), names: z.array(name).optional(), addresses: z.array(address).optional(), people: z.array(person).optional(), phone_numbers: z.array(phoneNumber).optional(), email_addresses: z.array(emailAddress).optional(), profiles: z.array(profile).optional(), registrations: z.array(registration).optional(), orders: z.array(order).optional(), industry_classification: industryClassification.nullable().optional(), monitor: monitor.nullable().optional(), tax_exempt_organization: taxExemptOrganization.nullable().optional(), fmcsa_registrations: z.array(fmcsaRegistration).optional(), loans: z.array(loan).nullable().optional(), litigations: z.array(litigation).optional(), policy_results: z.array(policyResult).optional(), politically_exposed_person_screening: politicallyExposedPersonScreening.nullable().optional(), adverse_media_screening: adverseMediaScreening.nullable().optional(), signal: signal.nullable().optional(), submitted: submittedAttribute.optional(), subscription: subscription.nullable().optional(), subscription_availability: businessSubscriptionAvailability.nullable().optional(), created_at: z.string(), updated_at: z.string()}); 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 }; /** * Create a business * * POST /v1/businesses */ export const createApiV1Businesses = async (args: CreateApiV1BusinessesArgs, options?: CreateApiV1BusinessesOptions) => { const {baseUrl = "https://api.middesk.com", fetch: fetchFn = fetch, bearerAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (bearerAuth !== undefined) headers.set('authorization', `Bearer ${bearerAuth}`) const url = `${baseUrl.replace(/\/+$/, '')}/v1/businesses${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(business, await res.json()) };