@simpleapps-com/augur-api
Version:
TypeScript client library for Augur microservices API endpoints
118 lines • 4.03 kB
JavaScript
import { z } from 'zod';
import { BaseResponseSchema } from '../../core/schemas';
// Health check schemas
export const HealthCheckResponseSchema = BaseResponseSchema(z.string());
// Tax rates request parameters schema
export const RatesRequestParamsSchema = z
.object({
// Common tax calculation parameters
lines: z
.array(z.object({
amount: z.number().min(0),
description: z.string().optional(),
taxCode: z.string().optional(),
customerUsageType: z.string().optional(),
itemCode: z.string().optional(),
quantity: z.number().min(0).optional(),
discount: z.number().min(0).optional(),
}))
.min(1),
addresses: z
.object({
shipFrom: z
.object({
line1: z.string().optional(),
city: z.string().optional(),
region: z.string().optional(),
country: z.string().optional(),
postalCode: z.string().optional(),
})
.optional(),
shipTo: z.object({
line1: z.string().optional(),
city: z.string().optional(),
region: z.string().optional(),
country: z.string().optional(),
postalCode: z.string().optional(),
}),
})
.optional(),
date: z.string().optional(),
type: z
.enum(['SalesOrder', 'SalesInvoice', 'ReturnInvoice', 'InventoryTransferOrder'])
.optional(),
companyCode: z.string().optional(),
customerCode: z.string().optional(),
businessIdentificationNo: z.string().optional(),
commit: z.boolean().optional(),
currencyCode: z.string().optional(),
})
.passthrough();
// Tax rate calculation response schemas
export const TaxLineSchema = z
.object({
lineNumber: z.string().optional(),
taxableAmount: z.number().optional(),
tax: z.number().optional(),
taxCalculated: z.number().optional(),
rate: z.number().optional(),
exemptAmount: z.number().optional(),
details: z
.array(z.object({
jurisdictionName: z.string().optional(),
rate: z.number().optional(),
tax: z.number().optional(),
taxableAmount: z.number().optional(),
taxType: z.string().optional(),
jurisdictionType: z.string().optional(),
}))
.optional(),
})
.passthrough();
export const TaxCalculationResultSchema = z
.object({
totalAmount: z.number().optional(),
totalExempt: z.number().optional(),
totalTaxable: z.number().optional(),
totalTax: z.number().optional(),
totalTaxCalculated: z.number().optional(),
taxDate: z.string().optional(),
lines: z.array(TaxLineSchema).optional(),
addresses: z
.array(z.object({
addressType: z.string().optional(),
line1: z.string().optional(),
city: z.string().optional(),
region: z.string().optional(),
country: z.string().optional(),
postalCode: z.string().optional(),
latitude: z.number().optional(),
longitude: z.number().optional(),
}))
.optional(),
summary: z
.array(z.object({
country: z.string().optional(),
region: z.string().optional(),
jurisType: z.string().optional(),
jurisCode: z.string().optional(),
jurisName: z.string().optional(),
taxAuthorityType: z.number().optional(),
stateAssignedNo: z.string().optional(),
taxType: z.string().optional(),
taxName: z.string().optional(),
taxGroup: z.string().optional(),
rateType: z.string().optional(),
taxable: z.number().optional(),
rate: z.number().optional(),
tax: z.number().optional(),
taxCalculated: z.number().optional(),
nonTaxable: z.number().optional(),
exemption: z.number().optional(),
}))
.optional(),
})
.passthrough();
// Response schemas
export const RatesResponseSchema = BaseResponseSchema(TaxCalculationResultSchema);
//# sourceMappingURL=schemas.js.map