import {z} from 'zod' export type UserSimple = {'account-security-type'?: number | undefined, active?: boolean | undefined, 'aic-user'?: boolean | undefined, 'analytics-user'?: boolean | undefined, 'api-user'?: boolean | undefined, 'authentication-method'?: unknown | undefined, 'avatar-thumb-url'?: unknown | undefined, 'business-function'?: unknown | undefined, 'business-group-security-type'?: number | undefined, 'ccw-user'?: boolean | undefined, 'contracts-user'?: boolean | undefined, 'created-at'?: unknown | undefined, 'default-locale'?: unknown | undefined, 'edit-invoice-on-quick-entry'?: boolean | undefined, email: unknown, 'employee-number'?: unknown | undefined, 'expense-user'?: boolean | undefined, firstname: unknown, fullname?: unknown | undefined, 'generate-password-and-notify'?: ('Yes' | 'No') | undefined, id?: number | undefined, 'inventory-user'?: boolean | undefined, lastname: unknown, login: unknown, 'mention-name'?: unknown | undefined, password?: unknown | undefined, 'purchasing-user'?: boolean | undefined, 'salesforce-enabled'?: boolean | undefined, 'salesforce-id': unknown, 'seniority-level'?: unknown | undefined, 'sourcing-user'?: boolean | undefined, 'spend-guard-user'?: boolean | undefined, 'sso-identifier'?: unknown | undefined, 'updated-at'?: unknown | undefined}; export type Currency = {code: unknown, 'created-by'?: UserSimple | undefined, decimals?: number | undefined, enabled?: boolean | undefined, id?: number | undefined, name: unknown, symbol?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type BusinessGroup = {'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, description?: unknown | undefined, id?: number | undefined, name: unknown, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type Country = {code?: unknown | undefined, id?: number | undefined, name?: unknown | undefined}; export type Purpose = {'created-at'?: unknown | undefined, id?: number | undefined, name?: unknown | undefined, 'updated-at'?: unknown | undefined}; export type Address = {active?: boolean | undefined, attention?: unknown | undefined, 'business-group-name'?: unknown | undefined, city: unknown, 'content-groups'?: BusinessGroup | undefined, country: Country, 'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, id?: number | undefined, 'local-tax-number': unknown, 'location-code'?: unknown | undefined, name?: unknown | undefined, 'postal-code': unknown, purposes?: Purpose | undefined, state?: unknown | undefined, street1: unknown, street2?: unknown | undefined, street3?: unknown | undefined, street4?: unknown | undefined, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined, 'vat-country'?: Country | undefined, 'vat-number'?: unknown | undefined}; export type PhoneNumber = {'area-code'?: unknown | undefined, 'country-code'?: unknown | undefined, 'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, extension?: unknown | undefined, id?: number | undefined, number?: unknown | undefined, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type Contact = {'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, email?: unknown | undefined, id?: number | undefined, 'name-additional'?: unknown | undefined, 'name-family'?: unknown | undefined, 'name-fullname'?: unknown | undefined, 'name-given'?: unknown | undefined, 'name-prefix'?: unknown | undefined, 'name-suffix'?: unknown | undefined, notes?: unknown | undefined, 'phone-fax'?: PhoneNumber | undefined, 'phone-mobile'?: PhoneNumber | undefined, 'phone-work'?: PhoneNumber | undefined, photo?: unknown | undefined, purposes?: Purpose | undefined, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type AccountType = {active?: boolean | undefined, 'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, currency: Currency, id?: number | undefined, 'legal-entity-name'?: unknown | undefined, name: unknown, 'primary-address'?: Address | undefined, 'primary-contact'?: Contact | undefined, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type Account = {'account-type': AccountType, active?: boolean | undefined, code?: unknown | undefined, 'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, id?: number | undefined, name?: unknown | undefined, 'segment-1'?: unknown | undefined, 'segment-10'?: unknown | undefined, 'segment-11'?: unknown | undefined, 'segment-12'?: unknown | undefined, 'segment-13'?: unknown | undefined, 'segment-14'?: unknown | undefined, 'segment-15'?: unknown | undefined, 'segment-16'?: unknown | undefined, 'segment-17'?: unknown | undefined, 'segment-18'?: unknown | undefined, 'segment-19'?: unknown | undefined, 'segment-2'?: unknown | undefined, 'segment-20'?: unknown | undefined, 'segment-3'?: unknown | undefined, 'segment-4'?: unknown | undefined, 'segment-5'?: unknown | undefined, 'segment-6'?: unknown | undefined, 'segment-7'?: unknown | undefined, 'segment-8'?: unknown | undefined, 'segment-9'?: unknown | undefined, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type Period = {'account-type'?: AccountType | undefined, 'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, 'end-date': unknown, id?: number | undefined, 'is-open'?: boolean | undefined, name: unknown, 'segment-1'?: boolean | undefined, 'segment-10'?: boolean | undefined, 'segment-11'?: boolean | undefined, 'segment-12'?: boolean | undefined, 'segment-13'?: boolean | undefined, 'segment-14'?: boolean | undefined, 'segment-15'?: boolean | undefined, 'segment-16'?: boolean | undefined, 'segment-17'?: boolean | undefined, 'segment-18'?: boolean | undefined, 'segment-19'?: boolean | undefined, 'segment-2'?: boolean | undefined, 'segment-20'?: boolean | undefined, 'segment-3'?: boolean | undefined, 'segment-4'?: boolean | undefined, 'segment-5'?: boolean | undefined, 'segment-6'?: boolean | undefined, 'segment-7'?: boolean | undefined, 'segment-8'?: boolean | undefined, 'segment-9'?: boolean | undefined, 'start-date': unknown, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type ExpenseLineAllocation = {account: Account, amount?: number | undefined, 'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, id?: number | undefined, pct: number, period?: Period | undefined, 'read-only'?: boolean | undefined, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type AuditStatus = Record; export type ExpenseArtifact = {'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, 'external-src-ref'?: unknown | undefined, id?: number | undefined, 'image-content-type'?: unknown | undefined, 'image-file-name'?: unknown | undefined, 'image-file-size'?: unknown | undefined, 'ocr-status'?: unknown | undefined, 'source-content-type'?: unknown | undefined, 'source-file-name'?: unknown | undefined, 'source-file-size'?: unknown | undefined, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined, url?: unknown | undefined}; export type ExpenseAttendee = {active?: boolean | undefined, company?: unknown | undefined, 'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, 'expense-attendee-type-custom-field-1'?: unknown | undefined, 'expense-attendee-type-custom-field-10'?: unknown | undefined, 'expense-attendee-type-custom-field-2'?: unknown | undefined, 'expense-attendee-type-custom-field-3'?: unknown | undefined, 'expense-attendee-type-custom-field-4'?: unknown | undefined, 'expense-attendee-type-custom-field-5'?: unknown | undefined, 'expense-attendee-type-custom-field-6'?: unknown | undefined, 'expense-attendee-type-custom-field-7'?: unknown | undefined, 'expense-attendee-type-custom-field-8'?: unknown | undefined, 'expense-attendee-type-custom-field-9'?: unknown | undefined, 'expense-attendee-type-id'?: number | undefined, 'expense-attendee-type-name'?: string | undefined, 'first-name': unknown, id?: number | undefined, 'last-name': unknown, title?: unknown | undefined, 'updated-at'?: unknown | undefined, 'user-id'?: number | undefined}; export type ExpenseAttendeeType = {'active-dependent-fields'?: unknown | undefined, 'attendee-src'?: unknown | undefined, 'created-at'?: unknown | undefined, id?: number | undefined, name: unknown, 'updated-at'?: unknown | undefined}; export type ExpenseMileageRateType = {'created-at'?: unknown | undefined, id?: number | undefined, name?: unknown | undefined, 'rate-type'?: unknown | undefined, 'updated-at'?: unknown | undefined}; export type ExpenseMileageTierRule = {'created-at'?: unknown | undefined, 'distance-range-start'?: number | undefined, 'expense-mileage-rate-type'?: ExpenseMileageRateType | undefined, id?: number | undefined, 'updated-at'?: unknown | undefined}; export type ExpenseMileageConfig = {'accumulation-period-start-day-month': string, country?: Country | undefined, 'created-at'?: unknown | undefined, 'distance-unit'?: unknown | undefined, 'expense-mileage-tier-rules'?: ExpenseMileageTierRule | undefined, id?: number | undefined, 'mileage-accumulation-rule-enabled'?: boolean | undefined, 'passenger-count-prompt': unknown, 'passenger-count-rule-enabled'?: boolean | undefined, 'region-prompt': unknown, 'region-rule-enabled'?: boolean | undefined, 'require-address'?: boolean | undefined, 'show-map'?: boolean | undefined, 'simple-fixed-rate-amount': number, 'simple-fixed-rate-currency-id': number, 'simple-fixed-rate-enabled'?: boolean | undefined, 'updated-at'?: unknown | undefined, 'vehicle-type-prompt': unknown, 'vehicle-type-rule-enabled'?: boolean | undefined}; export type ExpensePerDiemDeduction = {'created-at'?: unknown | undefined, 'effective-date'?: unknown | undefined, enabled?: boolean | undefined, 'expense-per-diem-deduction-type-id'?: number | undefined, id?: number | undefined, label: unknown, 'updated-at'?: unknown | undefined}; export type ExpensePerDiemRuleCondition = {comparator?: unknown | undefined, 'created-at'?: unknown | undefined, id?: number | undefined, lhs?: unknown | undefined, rhs?: unknown | undefined, 'updated-at'?: unknown | undefined}; export type ExpensePerDiemTimeRangeCondition = {conjunction?: unknown | undefined, 'created-at'?: unknown | undefined, 'end-after'?: string | undefined, 'end-before'?: string | undefined, id?: number | undefined, 'start-after'?: string | undefined, 'start-before'?: string | undefined, 'updated-at'?: unknown | undefined}; export type ExpensePerDiemRule = {'created-at'?: unknown | undefined, 'effective-date'?: unknown | undefined, enabled?: boolean | undefined, 'end-after': string, 'end-before': string, 'expense-per-diem-rate-type-id'?: number | undefined, 'expense-per-diem-rule-conditions'?: ExpensePerDiemRuleCondition | undefined, 'expense-per-diem-time-range-condition'?: ExpensePerDiemTimeRangeCondition | undefined, hours: number, id?: number | undefined, label: unknown, rank?: number | undefined, 'rate-frequency'?: unknown | undefined, 'rate-location-type'?: unknown | undefined, 'rate-logic'?: number | undefined, 'rate-percentage'?: number | undefined, 'rule-type'?: unknown | undefined, 'start-after': string, 'start-before': string, 'updated-at'?: unknown | undefined}; export type ExpensePerDiemConfig = {'country-id'?: number | undefined, 'created-at'?: unknown | undefined, 'deductions-section-label': unknown, 'expense-per-diem-deductions'?: ExpensePerDiemDeduction | undefined, 'expense-per-diem-rules'?: ExpensePerDiemRule | undefined, id?: number | undefined, 'policy-description'?: unknown | undefined, 'policy-title'?: unknown | undefined, 'rule-set-type'?: unknown | undefined, scope?: unknown | undefined, 'updated-at'?: unknown | undefined}; export type ExpensePolicy = {active?: boolean | undefined, 'allow-divisor'?: boolean | undefined, 'allow-divisor-end-date'?: boolean | undefined, 'allow-itemization'?: boolean | undefined, 'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, 'divisor-end-name'?: unknown | undefined, 'divisor-start-name'?: unknown | undefined, 'divisor-uom-name'?: unknown | undefined, 'expense-category-ids'?: unknown | undefined, id?: number | undefined, 'limit-amount'?: number | undefined, 'limit-type'?: unknown | undefined, 'requires-receipt'?: boolean | undefined, 'restrict-itemization-categories'?: boolean | undefined, summary?: unknown | undefined, text?: unknown | undefined, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type ExpenseCategory = {active?: boolean | undefined, 'attendee-tracking-enabled'?: boolean | undefined, 'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, 'expense-attendee-types'?: ExpenseAttendeeType | undefined, 'expense-mileage-config': ExpenseMileageConfig, 'expense-per-diem-config': ExpensePerDiemConfig, 'expense-policy': ExpensePolicy, id?: number | undefined, name: unknown, scope?: unknown | undefined, type?: unknown | undefined, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type ExpenseLineImportedData = {amount?: number | undefined, description?: unknown | undefined, id?: number | undefined}; export type ExpenseLineMileageAllocation = {'applied-distance'?: number | undefined, 'applied-rate'?: number | undefined, 'created-at'?: unknown | undefined, 'expense-mileage-rate-type-id'?: number | undefined, id?: number | undefined, 'updated-at'?: unknown | undefined}; export type ExpenseMileageRegion = {country?: Country | undefined, 'created-at'?: unknown | undefined, id?: number | undefined, 'location-id'?: unknown | undefined, name?: unknown | undefined, 'updated-at'?: unknown | undefined}; export type ExpenseMileageVehicleType = {'created-at'?: unknown | undefined, id?: number | undefined, name?: unknown | undefined, 'updated-at'?: unknown | undefined}; export type ExpenseLineMileage = {'created-at'?: unknown | undefined, distance: number, 'distance-unit': unknown, 'end-address': unknown, 'expense-line-mileage-allocations'?: ExpenseLineMileageAllocation | undefined, 'expense-mileage-region'?: ExpenseMileageRegion | undefined, 'expense-mileage-region-id': number, 'expense-mileage-vehicle-type'?: ExpenseMileageVehicleType | undefined, 'expense-mileage-vehicle-type-id': number, id?: number | undefined, 'passenger-count'?: number | undefined, 'round-trip'?: boolean | undefined, 'start-address': unknown, 'updated-at'?: unknown | undefined}; export type ExpenseLinePerDiem = {'created-at'?: unknown | undefined, 'daily-per-diems'?: unknown | undefined, destination: unknown, 'end-at': unknown, 'end-at-timezone': unknown, id?: number | undefined, 'start-at': unknown, 'start-at-timezone': unknown, 'updated-at'?: unknown | undefined}; export type ExpensePreapproval = {amount: number, available?: boolean | undefined, 'available-amount'?: number | undefined, 'available-amount-currency'?: Currency | undefined, 'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, currency?: Currency | undefined, description: unknown, 'end-date'?: unknown | undefined, 'for-user'?: UserSimple | undefined, id?: number | undefined, 'start-date'?: unknown | undefined, type?: unknown | undefined, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type ExpenseReportPreapproval = {amount?: number | undefined, 'created-at'?: unknown | undefined, currency?: Currency | undefined, 'expense-preapproval'?: ExpensePreapproval | undefined, id?: number | undefined, 'updated-at'?: unknown | undefined}; export type ExpenseLinePreapproval = {amount?: number | undefined, 'created-at'?: unknown | undefined, currency?: Currency | undefined, 'expense-report-preapproval'?: ExpenseReportPreapproval | undefined, id?: number | undefined, 'updated-at'?: unknown | undefined}; export type TaxRateType = {active?: boolean | undefined, country?: Country | undefined, 'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, description?: unknown | undefined, 'effective-date'?: unknown | undefined, 'expiration-date'?: unknown | undefined, id?: number | undefined, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type TaxRate = {active?: boolean | undefined, country?: Country | undefined, 'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, 'customer-accounting'?: boolean | undefined, 'effective-date'?: unknown | undefined, exempt?: boolean | undefined, 'expiration-date'?: unknown | undefined, id?: number | undefined, percentage: number, 'reverse-charge'?: boolean | undefined, 'tax-description'?: unknown | undefined, 'tax-rate-type'?: TaxRateType | undefined, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type TaxCode = {active?: boolean | undefined, code: unknown, country: Country, 'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, description?: unknown | undefined, 'effective-date'?: unknown | undefined, id?: number | undefined, percentage: number, 'tax-rate'?: TaxRate | undefined, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type ExpenseLineTax = {amount?: number | undefined, 'country-id'?: number | undefined, 'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, 'currency-id'?: number | undefined, id?: number | undefined, 'std-amount'?: number | undefined, 'tax-code'?: TaxCode | undefined, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type Integration = {'business-object': unknown, code: unknown, 'created-at'?: unknown | undefined, direction: 'to_coupa' | 'from_coupa', 'end-system': unknown, 'end-system-type': 'payroll' | 'erp' | 'hr' | 'third_party_partner' | 'third_party_vendor' | 'other', id?: number | undefined, 'integration-type'?: ('flat_file' | 'api' | 'corporate_credit_card_file') | undefined, name: unknown, standard?: boolean | undefined, 'updated-at'?: unknown | undefined}; export type ExchangeRate = {'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, 'from-currency': Currency, id?: number | undefined, rate?: number | undefined, 'rate-date'?: unknown | undefined, 'to-currency': Currency, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type ItemizedExpenseLine = {account?: Account | undefined, 'account-allocations'?: ExpenseLineAllocation | undefined, 'accounting-total'?: number | undefined, 'accounting-total-currency'?: Currency | undefined, amount?: number | undefined, 'approved-amount'?: number | undefined, 'audit-status'?: AuditStatus | undefined, 'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, currency?: Currency | undefined, 'custom-field-1'?: unknown | undefined, 'custom-field-10'?: unknown | undefined, 'custom-field-11'?: unknown | undefined, 'custom-field-12'?: unknown | undefined, 'custom-field-13'?: unknown | undefined, 'custom-field-14'?: unknown | undefined, 'custom-field-15'?: unknown | undefined, 'custom-field-16'?: unknown | undefined, 'custom-field-17'?: unknown | undefined, 'custom-field-18'?: unknown | undefined, 'custom-field-19'?: unknown | undefined, 'custom-field-2'?: unknown | undefined, 'custom-field-20'?: unknown | undefined, 'custom-field-3'?: unknown | undefined, 'custom-field-4'?: unknown | undefined, 'custom-field-5'?: unknown | undefined, 'custom-field-6'?: unknown | undefined, 'custom-field-7'?: unknown | undefined, 'custom-field-8'?: unknown | undefined, 'custom-field-9'?: unknown | undefined, description: unknown, divisor?: number | undefined, 'end-date'?: unknown | undefined, 'exchange-rate'?: number | undefined, 'expense-artifacts'?: ExpenseArtifact | undefined, 'expense-category': ExpenseCategory, 'expense-category-custom-field-1'?: unknown | undefined, 'expense-category-custom-field-10'?: unknown | undefined, 'expense-category-custom-field-2'?: unknown | undefined, 'expense-category-custom-field-3'?: unknown | undefined, 'expense-category-custom-field-4'?: unknown | undefined, 'expense-category-custom-field-5'?: unknown | undefined, 'expense-category-custom-field-6'?: unknown | undefined, 'expense-category-custom-field-7'?: unknown | undefined, 'expense-category-custom-field-8'?: unknown | undefined, 'expense-category-custom-field-9'?: unknown | undefined, 'expense-date': unknown, 'expense-line-imported-data'?: ExpenseLineImportedData | undefined, 'expense-line-taxes'?: ExpenseLineTax | undefined, 'expense-report-id'?: number | undefined, 'expensed-by'?: UserSimple | undefined, 'external-src-data'?: unknown | undefined, 'external-src-name'?: unknown | undefined, 'external-src-ref'?: unknown | undefined, 'foreign-currency': Currency, 'foreign-currency-amount'?: number | undefined, 'foreign-currency-id'?: number | undefined, frugality?: string | undefined, id?: number | undefined, integration?: Integration | undefined, 'line-number'?: string | undefined, merchant?: unknown | undefined, 'order-line-id'?: number | undefined, 'over-limit'?: boolean | undefined, 'parent-expense-line-id'?: number | undefined, 'parent-external-src-data'?: unknown | undefined, 'parent-external-src-name'?: unknown | undefined, 'parent-external-src-ref'?: unknown | undefined, period?: Period | undefined, reason?: unknown | undefined, 'receipt-total-amount'?: number | undefined, 'receipt-total-currency-id'?: number | undefined, 'reporting-total'?: number | undefined, 'start-date': unknown, status?: unknown | undefined, 'suggested-exchange-rate'?: ExchangeRate | undefined, type?: unknown | undefined, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type ExpenseLine = {account?: Account | undefined, 'account-allocations'?: ExpenseLineAllocation | undefined, 'accounting-total'?: number | undefined, 'accounting-total-currency'?: Currency | undefined, amount?: number | undefined, 'approved-amount'?: number | undefined, 'audit-status'?: AuditStatus | undefined, 'created-at'?: unknown | undefined, 'created-by'?: UserSimple | undefined, currency?: Currency | undefined, 'custom-field-1'?: unknown | undefined, 'custom-field-10'?: unknown | undefined, 'custom-field-11'?: unknown | undefined, 'custom-field-12'?: unknown | undefined, 'custom-field-13'?: unknown | undefined, 'custom-field-14'?: unknown | undefined, 'custom-field-15'?: unknown | undefined, 'custom-field-16'?: unknown | undefined, 'custom-field-17'?: unknown | undefined, 'custom-field-18'?: unknown | undefined, 'custom-field-19'?: unknown | undefined, 'custom-field-2'?: unknown | undefined, 'custom-field-20'?: unknown | undefined, 'custom-field-3'?: unknown | undefined, 'custom-field-4'?: unknown | undefined, 'custom-field-5'?: unknown | undefined, 'custom-field-6'?: unknown | undefined, 'custom-field-7'?: unknown | undefined, 'custom-field-8'?: unknown | undefined, 'custom-field-9'?: unknown | undefined, description: unknown, divisor?: number | undefined, 'end-date'?: unknown | undefined, 'exchange-rate'?: number | undefined, 'expense-artifacts'?: ExpenseArtifact | undefined, 'expense-attendees'?: ExpenseAttendee | undefined, 'expense-category': ExpenseCategory, 'expense-category-custom-field-1'?: unknown | undefined, 'expense-category-custom-field-10'?: unknown | undefined, 'expense-category-custom-field-2'?: unknown | undefined, 'expense-category-custom-field-3'?: unknown | undefined, 'expense-category-custom-field-4'?: unknown | undefined, 'expense-category-custom-field-5'?: unknown | undefined, 'expense-category-custom-field-6'?: unknown | undefined, 'expense-category-custom-field-7'?: unknown | undefined, 'expense-category-custom-field-8'?: unknown | undefined, 'expense-category-custom-field-9'?: unknown | undefined, 'expense-date': unknown, 'expense-line-daily-per-diems'?: unknown | undefined, 'expense-line-imported-data'?: ExpenseLineImportedData | undefined, 'expense-line-mileage'?: ExpenseLineMileage | undefined, 'expense-line-per-diem'?: ExpenseLinePerDiem | undefined, 'expense-line-preapproval'?: ExpenseLinePreapproval | undefined, 'expense-line-taxes'?: ExpenseLineTax | undefined, 'expense-report-id'?: number | undefined, 'expense-trip'?: unknown | undefined, 'expensed-by'?: UserSimple | undefined, 'external-src-data'?: unknown | undefined, 'external-src-name'?: unknown | undefined, 'external-src-ref'?: unknown | undefined, 'foreign-currency': Currency, 'foreign-currency-amount'?: number | undefined, 'foreign-currency-id'?: number | undefined, frugality?: ('shame' | 'praise') | undefined, id?: number | undefined, integration?: Integration | undefined, 'itemized-expense-lines'?: ItemizedExpenseLine | undefined, 'last-send-back-comment'?: unknown | undefined, 'last-send-back-reason'?: unknown | undefined, 'line-number'?: number | undefined, merchant?: unknown | undefined, 'order-line-id'?: number | undefined, 'over-limit'?: boolean | undefined, 'parent-expense-line-id'?: number | undefined, 'parent-external-src-data'?: unknown | undefined, 'parent-external-src-name'?: unknown | undefined, 'parent-external-src-ref'?: unknown | undefined, period?: Period | undefined, reason?: unknown | undefined, 'receipt-total-amount'?: number | undefined, 'receipt-total-currency-id'?: number | undefined, 'reporting-total'?: number | undefined, 'requires-receipt'?: boolean | undefined, 'start-date': unknown, status?: unknown | undefined, 'suggested-exchange-rate'?: ExchangeRate | undefined, type?: unknown | undefined, 'updated-at'?: unknown | undefined, 'updated-by'?: UserSimple | undefined}; export type CreateApiExpenseLinesArgs = {return_object?: ('limited' | 'shallow' | 'none') | undefined, filter?: string | undefined, body: ExpenseLine}; export type CreateApiExpenseLinesOptions = {baseUrl?: string | undefined, internalApiKey?: string | undefined, fetch?: typeof fetch | undefined}; export const userSimple = z.object({"account-security-type": z.number().int().optional(), active: z.boolean().optional(), "aic-user": z.boolean().optional(), "analytics-user": z.boolean().optional(), "api-user": z.boolean().optional(), "authentication-method": z.string().optional(), "avatar-thumb-url": z.string().optional(), "business-function": z.string().optional(), "business-group-security-type": z.number().int().optional(), "ccw-user": z.boolean().optional(), "contracts-user": z.boolean().optional(), "created-at": z.string().optional(), "default-locale": z.string().optional(), "edit-invoice-on-quick-entry": z.boolean().optional(), email: z.string(), "employee-number": z.string().optional(), "expense-user": z.boolean().optional(), firstname: z.string(), fullname: z.string().optional(), "generate-password-and-notify": z.enum(["Yes", "No"]).optional(), id: z.number().int().optional(), "inventory-user": z.boolean().optional(), lastname: z.string(), login: z.string(), "mention-name": z.string().optional(), password: z.string().optional(), "purchasing-user": z.boolean().optional(), "salesforce-enabled": z.boolean().optional(), "salesforce-id": z.string(), "seniority-level": z.string().optional(), "sourcing-user": z.boolean().optional(), "spend-guard-user": z.boolean().optional(), "sso-identifier": z.string().optional(), "updated-at": z.string().optional()}); export const currency = z.object({code: z.string(), "created-by": userSimple.optional(), decimals: z.number().int().optional(), enabled: z.boolean().optional(), id: z.number().int().optional(), name: z.string(), symbol: z.string().optional(), "updated-by": userSimple.optional()}); export const businessGroup = z.object({"created-at": z.string().optional(), "created-by": userSimple.optional(), description: z.string().optional(), id: z.number().int().optional(), name: z.string(), "updated-at": z.string().optional(), "updated-by": userSimple.optional()}); export const country = z.object({code: z.string().optional(), id: z.number().int().optional(), name: z.string().optional()}); export const purpose = z.object({"created-at": z.string().optional(), id: z.number().int().optional(), name: z.string().optional(), "updated-at": z.string().optional()}); export const address = z.object({active: z.boolean().optional(), attention: z.string().optional(), "business-group-name": z.string().optional(), city: z.string(), "content-groups": businessGroup.optional(), country: country, "created-at": z.string().optional(), "created-by": userSimple.optional(), id: z.number().int().optional(), "local-tax-number": z.string(), "location-code": z.string().optional(), name: z.string().optional(), "postal-code": z.string(), purposes: purpose.optional(), state: z.string().optional(), street1: z.string(), street2: z.string().optional(), street3: z.string().optional(), street4: z.string().optional(), "updated-at": z.string().optional(), "updated-by": userSimple.optional(), "vat-country": country.optional(), "vat-number": z.string().optional()}); export const phoneNumber = z.object({"area-code": z.string().optional(), "country-code": z.string().optional(), "created-at": z.string().optional(), "created-by": userSimple.optional(), extension: z.string().optional(), id: z.number().int().optional(), number: z.string().optional(), "updated-at": z.string().optional(), "updated-by": userSimple.optional()}); export const contact = z.object({"created-at": z.string().optional(), "created-by": userSimple.optional(), email: z.string().optional(), id: z.number().int().optional(), "name-additional": z.string().optional(), "name-family": z.string().optional(), "name-fullname": z.string().optional(), "name-given": z.string().optional(), "name-prefix": z.string().optional(), "name-suffix": z.string().optional(), notes: z.string().optional(), "phone-fax": phoneNumber.optional(), "phone-mobile": phoneNumber.optional(), "phone-work": phoneNumber.optional(), photo: z.string().optional(), purposes: purpose.optional(), "updated-at": z.string().optional(), "updated-by": userSimple.optional()}); export const accountType = z.object({active: z.boolean().optional(), "created-at": z.string().optional(), "created-by": userSimple.optional(), currency: currency, id: z.number().int().optional(), "legal-entity-name": z.string().optional(), name: z.string(), "primary-address": address.optional(), "primary-contact": contact.optional(), "updated-at": z.string().optional(), "updated-by": userSimple.optional()}); export const account = z.object({"account-type": accountType, active: z.boolean().optional(), code: z.string().optional(), "created-at": z.string().optional(), "created-by": userSimple.optional(), id: z.number().int().optional(), name: z.string().optional(), "segment-1": z.string().optional(), "segment-10": z.string().optional(), "segment-11": z.string().optional(), "segment-12": z.string().optional(), "segment-13": z.string().optional(), "segment-14": z.string().optional(), "segment-15": z.string().optional(), "segment-16": z.string().optional(), "segment-17": z.string().optional(), "segment-18": z.string().optional(), "segment-19": z.string().optional(), "segment-2": z.string().optional(), "segment-20": z.string().optional(), "segment-3": z.string().optional(), "segment-4": z.string().optional(), "segment-5": z.string().optional(), "segment-6": z.string().optional(), "segment-7": z.string().optional(), "segment-8": z.string().optional(), "segment-9": z.string().optional(), "updated-at": z.string().optional(), "updated-by": userSimple.optional()}); export const period = z.object({"account-type": accountType.optional(), "created-at": z.string().optional(), "created-by": userSimple.optional(), "end-date": z.string(), id: z.number().int().optional(), "is-open": z.boolean().optional(), name: z.string(), "segment-1": z.boolean().optional(), "segment-10": z.boolean().optional(), "segment-11": z.boolean().optional(), "segment-12": z.boolean().optional(), "segment-13": z.boolean().optional(), "segment-14": z.boolean().optional(), "segment-15": z.boolean().optional(), "segment-16": z.boolean().optional(), "segment-17": z.boolean().optional(), "segment-18": z.boolean().optional(), "segment-19": z.boolean().optional(), "segment-2": z.boolean().optional(), "segment-20": z.boolean().optional(), "segment-3": z.boolean().optional(), "segment-4": z.boolean().optional(), "segment-5": z.boolean().optional(), "segment-6": z.boolean().optional(), "segment-7": z.boolean().optional(), "segment-8": z.boolean().optional(), "segment-9": z.boolean().optional(), "start-date": z.string(), "updated-at": z.string().optional(), "updated-by": userSimple.optional()}); export const expenseLineAllocation = z.object({account: account, amount: z.number().optional(), "created-at": z.string().optional(), "created-by": userSimple.optional(), id: z.number().int().optional(), pct: z.number(), period: period.optional(), "read-only": z.boolean().optional(), "updated-at": z.string().optional(), "updated-by": userSimple.optional()}); export const auditStatus = z.object({}); export const expenseArtifact = z.object({"created-at": z.string().optional(), "created-by": userSimple.optional(), "external-src-ref": z.string().optional(), id: z.number().int().optional(), "image-content-type": z.string().optional(), "image-file-name": z.string().optional(), "image-file-size": z.string().optional(), "ocr-status": z.string().optional(), "source-content-type": z.string().optional(), "source-file-name": z.string().optional(), "source-file-size": z.string().optional(), "updated-at": z.string().optional(), "updated-by": userSimple.optional(), url: z.string().optional()}); export const expenseAttendee = z.object({active: z.boolean().optional(), company: z.string().optional(), "created-at": z.string().optional(), "created-by": userSimple.optional(), "expense-attendee-type-custom-field-1": z.string().optional(), "expense-attendee-type-custom-field-10": z.string().optional(), "expense-attendee-type-custom-field-2": z.string().optional(), "expense-attendee-type-custom-field-3": z.string().optional(), "expense-attendee-type-custom-field-4": z.string().optional(), "expense-attendee-type-custom-field-5": z.string().optional(), "expense-attendee-type-custom-field-6": z.string().optional(), "expense-attendee-type-custom-field-7": z.string().optional(), "expense-attendee-type-custom-field-8": z.string().optional(), "expense-attendee-type-custom-field-9": z.string().optional(), "expense-attendee-type-id": z.number().int().optional(), "expense-attendee-type-name": z.string().optional(), "first-name": z.string(), id: z.number().int().optional(), "last-name": z.string(), title: z.string().optional(), "updated-at": z.string().optional(), "user-id": z.number().int().optional()}); export const expenseAttendeeType = z.object({"active-dependent-fields": z.string().optional(), "attendee-src": z.string().optional(), "created-at": z.string().optional(), id: z.number().int().optional(), name: z.string(), "updated-at": z.string().optional()}); export const expenseMileageRateType = z.object({"created-at": z.string().optional(), id: z.number().int().optional(), name: z.string().optional(), "rate-type": z.string().optional(), "updated-at": z.string().optional()}); export const expenseMileageTierRule = z.object({"created-at": z.string().optional(), "distance-range-start": z.number().int().optional(), "expense-mileage-rate-type": expenseMileageRateType.optional(), id: z.number().int().optional(), "updated-at": z.string().optional()}); export const expenseMileageConfig = z.object({"accumulation-period-start-day-month": z.string(), country: country.optional(), "created-at": z.string().optional(), "distance-unit": z.string().optional(), "expense-mileage-tier-rules": expenseMileageTierRule.optional(), id: z.number().int().optional(), "mileage-accumulation-rule-enabled": z.boolean().optional(), "passenger-count-prompt": z.string(), "passenger-count-rule-enabled": z.boolean().optional(), "region-prompt": z.string(), "region-rule-enabled": z.boolean().optional(), "require-address": z.boolean().optional(), "show-map": z.boolean().optional(), "simple-fixed-rate-amount": z.number(), "simple-fixed-rate-currency-id": z.number().int(), "simple-fixed-rate-enabled": z.boolean().optional(), "updated-at": z.string().optional(), "vehicle-type-prompt": z.string(), "vehicle-type-rule-enabled": z.boolean().optional()}); export const expensePerDiemDeduction = z.object({"created-at": z.string().optional(), "effective-date": z.string().optional(), enabled: z.boolean().optional(), "expense-per-diem-deduction-type-id": z.number().int().optional(), id: z.number().int().optional(), label: z.string(), "updated-at": z.string().optional()}); export const expensePerDiemRuleCondition = z.object({comparator: z.string().optional(), "created-at": z.string().optional(), id: z.number().int().optional(), lhs: z.string().optional(), rhs: z.string().optional(), "updated-at": z.string().optional()}); export const expensePerDiemTimeRangeCondition = z.object({conjunction: z.string().optional(), "created-at": z.string().optional(), "end-after": z.string().optional(), "end-before": z.string().optional(), id: z.number().int().optional(), "start-after": z.string().optional(), "start-before": z.string().optional(), "updated-at": z.string().optional()}); export const expensePerDiemRule = z.object({"created-at": z.string().optional(), "effective-date": z.string().optional(), enabled: z.boolean().optional(), "end-after": z.string(), "end-before": z.string(), "expense-per-diem-rate-type-id": z.number().int().optional(), "expense-per-diem-rule-conditions": expensePerDiemRuleCondition.optional(), "expense-per-diem-time-range-condition": expensePerDiemTimeRangeCondition.optional(), hours: z.number(), id: z.number().int().optional(), label: z.string(), rank: z.number().int().optional(), "rate-frequency": z.string().optional(), "rate-location-type": z.string().optional(), "rate-logic": z.number().int().optional(), "rate-percentage": z.number().optional(), "rule-type": z.string().optional(), "start-after": z.string(), "start-before": z.string(), "updated-at": z.string().optional()}); export const expensePerDiemConfig = z.object({"country-id": z.number().int().optional(), "created-at": z.string().optional(), "deductions-section-label": z.string(), "expense-per-diem-deductions": expensePerDiemDeduction.optional(), "expense-per-diem-rules": expensePerDiemRule.optional(), id: z.number().int().optional(), "policy-description": z.string().optional(), "policy-title": z.string().optional(), "rule-set-type": z.string().optional(), scope: z.string().optional(), "updated-at": z.string().optional()}); export const expensePolicy = z.object({active: z.boolean().optional(), "allow-divisor": z.boolean().optional(), "allow-divisor-end-date": z.boolean().optional(), "allow-itemization": z.boolean().optional(), "created-at": z.string().optional(), "created-by": userSimple.optional(), "divisor-end-name": z.string().optional(), "divisor-start-name": z.string().optional(), "divisor-uom-name": z.string().optional(), "expense-category-ids": z.string().optional(), id: z.number().int().optional(), "limit-amount": z.number().optional(), "limit-type": z.string().optional(), "requires-receipt": z.boolean().optional(), "restrict-itemization-categories": z.boolean().optional(), summary: z.string().optional(), text: z.string().optional(), "updated-at": z.string().optional(), "updated-by": userSimple.optional()}); export const expenseCategory = z.object({active: z.boolean().optional(), "attendee-tracking-enabled": z.boolean().optional(), "created-at": z.string().optional(), "created-by": userSimple.optional(), "expense-attendee-types": expenseAttendeeType.optional(), "expense-mileage-config": expenseMileageConfig, "expense-per-diem-config": expensePerDiemConfig, "expense-policy": expensePolicy, id: z.number().int().optional(), name: z.string(), scope: z.string().optional(), type: z.string().optional(), "updated-at": z.string().optional(), "updated-by": userSimple.optional()}); export const expenseLineImportedData = z.object({amount: z.number().optional(), description: z.string().optional(), id: z.number().int().optional()}); export const expenseLineMileageAllocation = z.object({"applied-distance": z.number().optional(), "applied-rate": z.number().optional(), "created-at": z.string().optional(), "expense-mileage-rate-type-id": z.number().int().optional(), id: z.number().int().optional(), "updated-at": z.string().optional()}); export const expenseMileageRegion = z.object({country: country.optional(), "created-at": z.string().optional(), id: z.number().int().optional(), "location-id": z.string().optional(), name: z.string().optional(), "updated-at": z.string().optional()}); export const expenseMileageVehicleType = z.object({"created-at": z.string().optional(), id: z.number().int().optional(), name: z.string().optional(), "updated-at": z.string().optional()}); export const expenseLineMileage = z.object({"created-at": z.string().optional(), distance: z.number(), "distance-unit": z.string(), "end-address": z.string(), "expense-line-mileage-allocations": expenseLineMileageAllocation.optional(), "expense-mileage-region": expenseMileageRegion.optional(), "expense-mileage-region-id": z.number().int(), "expense-mileage-vehicle-type": expenseMileageVehicleType.optional(), "expense-mileage-vehicle-type-id": z.number().int(), id: z.number().int().optional(), "passenger-count": z.number().int().optional(), "round-trip": z.boolean().optional(), "start-address": z.string(), "updated-at": z.string().optional()}); export const expenseLinePerDiem = z.object({"created-at": z.string().optional(), "daily-per-diems": z.string().optional(), destination: z.string(), "end-at": z.string(), "end-at-timezone": z.string(), id: z.number().int().optional(), "start-at": z.string(), "start-at-timezone": z.string(), "updated-at": z.string().optional()}); export const expensePreapproval = z.object({amount: z.number(), available: z.boolean().optional(), "available-amount": z.number().optional(), "available-amount-currency": currency.optional(), "created-at": z.string().optional(), "created-by": userSimple.optional(), currency: currency.optional(), description: z.string(), "end-date": z.string().optional(), "for-user": userSimple.optional(), id: z.number().int().optional(), "start-date": z.string().optional(), type: z.string().optional(), "updated-at": z.string().optional(), "updated-by": userSimple.optional()}); export const expenseReportPreapproval = z.object({amount: z.number().optional(), "created-at": z.string().optional(), currency: currency.optional(), "expense-preapproval": expensePreapproval.optional(), id: z.number().int().optional(), "updated-at": z.string().optional()}); export const expenseLinePreapproval = z.object({amount: z.number().optional(), "created-at": z.string().optional(), currency: currency.optional(), "expense-report-preapproval": expenseReportPreapproval.optional(), id: z.number().int().optional(), "updated-at": z.string().optional()}); export const taxRateType = z.object({active: z.boolean().optional(), country: country.optional(), "created-at": z.string().optional(), "created-by": userSimple.optional(), description: z.string().optional(), "effective-date": z.string().optional(), "expiration-date": z.string().optional(), id: z.number().int().optional(), "updated-at": z.string().optional(), "updated-by": userSimple.optional()}); export const taxRate = z.object({active: z.boolean().optional(), country: country.optional(), "created-at": z.string().optional(), "created-by": userSimple.optional(), "customer-accounting": z.boolean().optional(), "effective-date": z.string().optional(), exempt: z.boolean().optional(), "expiration-date": z.string().optional(), id: z.number().int().optional(), percentage: z.number(), "reverse-charge": z.boolean().optional(), "tax-description": z.string().optional(), "tax-rate-type": taxRateType.optional(), "updated-at": z.string().optional(), "updated-by": userSimple.optional()}); export const taxCode = z.object({active: z.boolean().optional(), code: z.string(), country: country, "created-at": z.string().optional(), "created-by": userSimple.optional(), description: z.string().optional(), "effective-date": z.string().optional(), id: z.number().int().optional(), percentage: z.number(), "tax-rate": taxRate.optional(), "updated-at": z.string().optional(), "updated-by": userSimple.optional()}); export const expenseLineTax = z.object({amount: z.number().optional(), "country-id": z.number().int().optional(), "created-at": z.string().optional(), "created-by": userSimple.optional(), "currency-id": z.number().int().optional(), id: z.number().int().optional(), "std-amount": z.number().optional(), "tax-code": taxCode.optional(), "updated-at": z.string().optional(), "updated-by": userSimple.optional()}); export const integration = z.object({"business-object": z.string(), code: z.string(), "created-at": z.string().optional(), direction: z.enum(["to_coupa", "from_coupa"]), "end-system": z.string(), "end-system-type": z.enum(["payroll", "erp", "hr", "third_party_partner", "third_party_vendor", "other"]), id: z.number().int().optional(), "integration-type": z.enum(["flat_file", "api", "corporate_credit_card_file"]).optional(), name: z.string(), standard: z.boolean().optional(), "updated-at": z.string().optional()}); export const exchangeRate = z.object({"created-at": z.string().optional(), "created-by": userSimple.optional(), "from-currency": currency, id: z.number().int().optional(), rate: z.number().optional(), "rate-date": z.string().optional(), "to-currency": currency, "updated-at": z.string().optional(), "updated-by": userSimple.optional()}); export const itemizedExpenseLine = z.object({account: account.optional(), "account-allocations": expenseLineAllocation.optional(), "accounting-total": z.number().optional(), "accounting-total-currency": currency.optional(), amount: z.number().optional(), "approved-amount": z.number().optional(), "audit-status": auditStatus.optional(), "created-at": z.string().optional(), "created-by": userSimple.optional(), currency: currency.optional(), "custom-field-1": z.string().optional(), "custom-field-10": z.string().optional(), "custom-field-11": z.string().optional(), "custom-field-12": z.string().optional(), "custom-field-13": z.string().optional(), "custom-field-14": z.string().optional(), "custom-field-15": z.string().optional(), "custom-field-16": z.string().optional(), "custom-field-17": z.string().optional(), "custom-field-18": z.string().optional(), "custom-field-19": z.string().optional(), "custom-field-2": z.string().optional(), "custom-field-20": z.string().optional(), "custom-field-3": z.string().optional(), "custom-field-4": z.string().optional(), "custom-field-5": z.string().optional(), "custom-field-6": z.string().optional(), "custom-field-7": z.string().optional(), "custom-field-8": z.string().optional(), "custom-field-9": z.string().optional(), description: z.string(), divisor: z.number().optional(), "end-date": z.string().optional(), "exchange-rate": z.number().optional(), "expense-artifacts": expenseArtifact.optional(), "expense-category": expenseCategory, "expense-category-custom-field-1": z.string().optional(), "expense-category-custom-field-10": z.string().optional(), "expense-category-custom-field-2": z.string().optional(), "expense-category-custom-field-3": z.string().optional(), "expense-category-custom-field-4": z.string().optional(), "expense-category-custom-field-5": z.string().optional(), "expense-category-custom-field-6": z.string().optional(), "expense-category-custom-field-7": z.string().optional(), "expense-category-custom-field-8": z.string().optional(), "expense-category-custom-field-9": z.string().optional(), "expense-date": z.string(), "expense-line-imported-data": expenseLineImportedData.optional(), "expense-line-taxes": expenseLineTax.optional(), "expense-report-id": z.number().int().optional(), "expensed-by": userSimple.optional(), "external-src-data": z.string().optional(), "external-src-name": z.string().optional(), "external-src-ref": z.string().optional(), "foreign-currency": currency, "foreign-currency-amount": z.number().optional(), "foreign-currency-id": z.number().int().optional(), frugality: z.string().optional(), id: z.number().int().optional(), integration: integration.optional(), "line-number": z.string().optional(), merchant: z.string().optional(), "order-line-id": z.number().int().optional(), "over-limit": z.boolean().optional(), "parent-expense-line-id": z.number().int().optional(), "parent-external-src-data": z.string().optional(), "parent-external-src-name": z.string().optional(), "parent-external-src-ref": z.string().optional(), period: period.optional(), reason: z.string().optional(), "receipt-total-amount": z.number().optional(), "receipt-total-currency-id": z.number().int().optional(), "reporting-total": z.number().optional(), "start-date": z.string(), status: z.string().optional(), "suggested-exchange-rate": exchangeRate.optional(), type: z.string().optional(), "updated-at": z.string().optional(), "updated-by": userSimple.optional()}); export const expenseLine = z.object({account: account.optional(), "account-allocations": expenseLineAllocation.optional(), "accounting-total": z.number().optional(), "accounting-total-currency": currency.optional(), amount: z.number().optional(), "approved-amount": z.number().optional(), "audit-status": auditStatus.optional(), "created-at": z.string().optional(), "created-by": userSimple.optional(), currency: currency.optional(), "custom-field-1": z.string().optional(), "custom-field-10": z.string().optional(), "custom-field-11": z.string().optional(), "custom-field-12": z.string().optional(), "custom-field-13": z.string().optional(), "custom-field-14": z.string().optional(), "custom-field-15": z.string().optional(), "custom-field-16": z.string().optional(), "custom-field-17": z.string().optional(), "custom-field-18": z.string().optional(), "custom-field-19": z.string().optional(), "custom-field-2": z.string().optional(), "custom-field-20": z.string().optional(), "custom-field-3": z.string().optional(), "custom-field-4": z.string().optional(), "custom-field-5": z.string().optional(), "custom-field-6": z.string().optional(), "custom-field-7": z.string().optional(), "custom-field-8": z.string().optional(), "custom-field-9": z.string().optional(), description: z.string(), divisor: z.number().optional(), "end-date": z.string().optional(), "exchange-rate": z.number().optional(), "expense-artifacts": expenseArtifact.optional(), "expense-attendees": expenseAttendee.optional(), "expense-category": expenseCategory, "expense-category-custom-field-1": z.string().optional(), "expense-category-custom-field-10": z.string().optional(), "expense-category-custom-field-2": z.string().optional(), "expense-category-custom-field-3": z.string().optional(), "expense-category-custom-field-4": z.string().optional(), "expense-category-custom-field-5": z.string().optional(), "expense-category-custom-field-6": z.string().optional(), "expense-category-custom-field-7": z.string().optional(), "expense-category-custom-field-8": z.string().optional(), "expense-category-custom-field-9": z.string().optional(), "expense-date": z.string(), "expense-line-daily-per-diems": z.string().optional(), "expense-line-imported-data": expenseLineImportedData.optional(), "expense-line-mileage": expenseLineMileage.optional(), "expense-line-per-diem": expenseLinePerDiem.optional(), "expense-line-preapproval": expenseLinePreapproval.optional(), "expense-line-taxes": expenseLineTax.optional(), "expense-report-id": z.number().int().optional(), "expense-trip": z.string().optional(), "expensed-by": userSimple.optional(), "external-src-data": z.string().optional(), "external-src-name": z.string().optional(), "external-src-ref": z.string().optional(), "foreign-currency": currency, "foreign-currency-amount": z.number().optional(), "foreign-currency-id": z.number().int().optional(), frugality: z.enum(["shame", "praise"]).optional(), id: z.number().int().optional(), integration: integration.optional(), "itemized-expense-lines": itemizedExpenseLine.optional(), "last-send-back-comment": z.string().optional(), "last-send-back-reason": z.string().optional(), "line-number": z.number().int().optional(), merchant: z.string().optional(), "order-line-id": z.number().int().optional(), "over-limit": z.boolean().optional(), "parent-expense-line-id": z.number().int().optional(), "parent-external-src-data": z.string().optional(), "parent-external-src-name": z.string().optional(), "parent-external-src-ref": z.string().optional(), period: period.optional(), reason: z.string().optional(), "receipt-total-amount": z.number().optional(), "receipt-total-currency-id": z.number().int().optional(), "reporting-total": z.number().optional(), "requires-receipt": z.boolean().optional(), "start-date": z.string(), status: z.string().optional(), "suggested-exchange-rate": exchangeRate.optional(), type: z.string().optional(), "updated-at": z.string().optional(), "updated-by": userSimple.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 }; /** * Create expense line * * POST /expense_lines */ export const createApiExpenseLines = async (args: CreateApiExpenseLinesArgs, options?: CreateApiExpenseLinesOptions) => { const {baseUrl = "https://dashmaster24-4.coupadev.com/api", fetch: fetchFn = fetch, internalApiKey} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (args.return_object != null) query.append("return_object", String(args.return_object)) if (args.filter != null) query.append("filter", String(args.filter)) if (internalApiKey !== undefined) headers.set("X-COUPA-API-KEY", internalApiKey) const url = `${baseUrl.replace(/\/+$/, '')}/expense_lines${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(expenseLine, await res.json()) };