vintrace-sdk 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +75 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +425 -3
- package/dist/index.d.ts +425 -3
- package/dist/index.js +75 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client/config.ts","../src/client/errors.ts","../src/validation/index.ts","../src/http/fetch.ts","../src/http/pagination.ts","../src/client/utils.ts","../src/validation/schemas.ts","../src/client/VintraceClient.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["export interface VintraceClientOptions {\n timeout?: number;\n maxRetries?: number;\n parallelLimit?: number;\n validateRequests?: boolean;\n validateResponses?: boolean;\n}\n\nexport interface VintraceClientConfig {\n baseUrl: string;\n organization: string;\n token: string;\n options?: VintraceClientOptions;\n}\n\nexport const DEFAULT_OPTIONS: Required<VintraceClientOptions> = {\n timeout: 30000,\n maxRetries: 3,\n parallelLimit: 5,\n validateRequests: true,\n validateResponses: true,\n};\n","export class VintraceError extends Error {\n public readonly status: number;\n public readonly correlationId?: string;\n public readonly body?: unknown;\n\n constructor(message: string, status: number, correlationId?: string, body?: unknown) {\n super(message);\n this.name = 'VintraceError';\n this.status = status;\n this.correlationId = correlationId;\n this.body = body;\n Error.captureStackTrace(this, this.constructor);\n }\n}\n\nexport class VintraceAuthenticationError extends VintraceError {\n constructor(message = 'Authentication failed', correlationId?: string, body?: unknown) {\n super(message, 401, correlationId, body);\n this.name = 'VintraceAuthenticationError';\n }\n}\n\nexport class VintraceRateLimitError extends VintraceError {\n public readonly retryAfter?: number;\n\n constructor(\n message = 'Rate limit exceeded',\n retryAfter?: number,\n correlationId?: string,\n body?: unknown\n ) {\n super(message, 429, correlationId, body);\n this.name = 'VintraceRateLimitError';\n this.retryAfter = retryAfter;\n }\n}\n\nexport class VintraceNotFoundError extends VintraceError {\n constructor(message = 'Resource not found', correlationId?: string, body?: unknown) {\n super(message, 404, correlationId, body);\n this.name = 'VintraceNotFoundError';\n }\n}\n\nexport class VintraceValidationError extends VintraceError {\n constructor(message = 'Validation failed', status = 400, correlationId?: string, body?: unknown) {\n super(message, status, correlationId, body);\n this.name = 'VintraceValidationError';\n }\n}\n\nexport class VintraceServerError extends VintraceError {\n constructor(message = 'Server error', status: number, correlationId?: string, body?: unknown) {\n super(message, status, correlationId, body);\n this.name = 'VintraceServerError';\n }\n}\n\nexport class VintraceAggregateError extends VintraceError {\n public readonly errors: VintraceError[];\n\n constructor(errors: VintraceError[]) {\n const message =\n errors.length === 1\n ? errors[0].message\n : `${errors.length} errors occurred: ${errors.map((e) => e.message).join('; ')}`;\n super(\n message,\n errors[0]?.status ?? 0,\n errors[0]?.correlationId,\n errors.map((e) => e.body)\n );\n this.name = 'VintraceAggregateError';\n this.errors = errors;\n }\n}\n\nexport function isRetryableStatus(status: number): boolean {\n return [408, 429, 500, 502, 503, 504].includes(status);\n}\n","import { z, ZodError, ZodType, ZodIssue } from 'zod';\nimport { VintraceError } from '../client/errors';\nimport { VintraceResult } from '../types/result';\n\nexport class VintraceValidationSchemaError extends VintraceError {\n constructor(\n message: string,\n public readonly errors: ZodIssue[],\n correlationId?: string\n ) {\n super(message, 422, correlationId);\n this.name = 'VintraceValidationSchemaError';\n }\n}\n\nexport function validateResponse<T>(\n schema: ZodType<T>,\n data: unknown,\n correlationId?: string\n): VintraceResult<T> {\n try {\n const validated = schema.parse(data);\n return [validated, null];\n } catch (error) {\n if (error instanceof ZodError) {\n const message = error.issues\n .map((e: ZodIssue) => `${e.path.join('.')}: ${e.message}`)\n .join('; ');\n return [null, new VintraceValidationSchemaError(message, error.issues, correlationId)];\n }\n return [null, new VintraceError('Response validation failed', 500, correlationId)];\n }\n}\n\nexport function validateRequest<T>(\n schema: ZodType<T>,\n data: unknown,\n correlationId?: string\n): VintraceResult<T> {\n try {\n const validated = schema.parse(data);\n return [validated, null];\n } catch (error) {\n if (error instanceof ZodError) {\n const message = error.issues\n .map((e: ZodIssue) => `${e.path.join('.')}: ${e.message}`)\n .join('; ');\n return [null, new VintraceValidationSchemaError(message, error.issues, correlationId)];\n }\n return [null, new VintraceError('Request validation failed', 500, correlationId)];\n }\n}\n\nexport { z };\nexport type { ZodType, ZodIssue };\n","import { DEFAULT_OPTIONS } from '../client/config';\nimport {\n VintraceError,\n VintraceAuthenticationError,\n VintraceRateLimitError,\n VintraceNotFoundError,\n VintraceValidationError,\n VintraceServerError,\n isRetryableStatus,\n} from '../client/errors';\nimport { VintraceResult } from '../types/result';\nimport { ZodType } from 'zod';\nimport { validateRequest, validateResponse } from '../validation';\n\nexport interface RequestOptions<T = unknown> {\n timeout?: number;\n maxRetries?: number;\n validateResponse?: boolean;\n validateRequest?: boolean;\n responseSchema?: ZodType<T>;\n requestSchema?: ZodType<unknown>;\n}\n\nfunction generateCorrelationId(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\nfunction getRetryAfterFromHeaders(headers: Headers): number | undefined {\n const retryAfter = headers.get('retry-after');\n if (retryAfter) {\n const parsed = parseInt(retryAfter, 10);\n return isNaN(parsed) ? undefined : parsed;\n }\n return undefined;\n}\n\nexport class VintraceFetchError extends VintraceError {\n constructor(message: string, status: number, correlationId?: string, body?: unknown) {\n super(message, status, correlationId, body);\n this.name = 'VintraceFetchError';\n }\n}\n\nexport async function vintraceFetch<T = unknown>(\n baseUrl: string,\n organization: string,\n token: string,\n endpoint: string,\n method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE',\n options: RequestOptions = {},\n body?: unknown\n): Promise<VintraceResult<T>> {\n const timeout = options.timeout ?? DEFAULT_OPTIONS.timeout;\n const maxRetries = options.maxRetries ?? DEFAULT_OPTIONS.maxRetries;\n\n const isBodylessMethod = method === 'GET' || method === 'DELETE';\n let url = `${baseUrl}/${organization}/api/${endpoint}`;\n const correlationId = generateCorrelationId();\n\n if (isBodylessMethod && body && typeof body === 'object') {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(body as Record<string, unknown>)) {\n if (value !== undefined && value !== null) {\n params.set(key, String(value));\n }\n }\n const qs = params.toString();\n if (qs) url = `${url}?${qs}`;\n }\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n 'correlation-id': correlationId,\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n };\n\n if (options.validateRequest && options.requestSchema && body) {\n const [validatedBody, requestError] = validateRequest(\n options.requestSchema,\n body,\n correlationId\n );\n if (requestError) {\n return [null, requestError];\n }\n body = validatedBody;\n }\n\n try {\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n try {\n const response = await fetch(url, {\n method,\n headers,\n body: isBodylessMethod ? undefined : body ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n const responseCorrelationId = response.headers.get('correlation-id') || correlationId;\n\n if (!response.ok) {\n let responseBody: unknown;\n const contentType = response.headers.get('content-type');\n try {\n if (contentType?.includes('application/json')) {\n responseBody = await response.json();\n } else {\n responseBody = await response.text();\n }\n } catch {\n // ignore body parse failure\n }\n\n const retryAfter = getRetryAfterFromHeaders(response.headers);\n let error: VintraceError;\n\n if (response.status === 401) {\n error = new VintraceAuthenticationError(\n 'Authentication failed',\n responseCorrelationId,\n responseBody\n );\n } else if (response.status === 404) {\n error = new VintraceNotFoundError(\n 'Resource not found',\n responseCorrelationId,\n responseBody\n );\n } else if (response.status === 429) {\n error = new VintraceRateLimitError(\n 'Rate limit exceeded',\n retryAfter,\n responseCorrelationId,\n responseBody\n );\n } else if (response.status >= 400 && response.status < 500) {\n error = new VintraceValidationError(\n 'Request validation failed',\n response.status,\n responseCorrelationId,\n responseBody\n );\n } else if (response.status >= 500) {\n error = new VintraceServerError(\n 'Server error',\n response.status,\n responseCorrelationId,\n responseBody\n );\n } else {\n error = new VintraceError(\n `Request failed with status ${response.status}`,\n response.status,\n responseCorrelationId,\n responseBody\n );\n }\n\n if (error instanceof VintraceRateLimitError && attempt < maxRetries) {\n const delay = error.retryAfter ?? Math.pow(2, attempt) * 1000;\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n if (error instanceof VintraceAuthenticationError) {\n return [null, error];\n }\n if (isRetryableStatus(error.status) && attempt < maxRetries) {\n const delay = Math.pow(2, attempt) * 1000;\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n\n return [null, error];\n }\n\n if (response.status === 204) {\n return [null, null];\n }\n\n const data = (await response.json()) as T;\n\n if (options.validateResponse && options.responseSchema) {\n const [validatedData, responseError] = validateResponse(\n options.responseSchema,\n data,\n responseCorrelationId\n );\n if (responseError) {\n return [null, responseError];\n }\n return [validatedData as T, null];\n }\n\n return [data, null];\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof VintraceError) {\n throw error;\n }\n\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n if (attempt < maxRetries) {\n const delay = Math.pow(2, attempt) * 1000;\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n return [null, new VintraceError('Request timeout', 408, correlationId)];\n }\n return [null, new VintraceFetchError(error.message, 0, correlationId)];\n }\n\n return [null, new VintraceFetchError('Unknown error', 0, correlationId)];\n }\n }\n\n return [null, new VintraceError('Max retries exceeded', 0, correlationId)];\n } catch (error) {\n if (error instanceof VintraceError) {\n return [null, error];\n }\n return [\n null,\n new VintraceFetchError(\n error instanceof Error ? error.message : 'Unknown error',\n 0,\n correlationId\n ),\n ];\n }\n}\n","import { VintraceResult } from '../types/result';\nimport { VintraceError, VintraceAggregateError } from '../client/errors';\n\nexport interface PaginatedResponse<T> {\n totalResults: number;\n offset: number;\n limit: number;\n first: string | null;\n previous: string | null;\n next: string | null;\n last: string | null;\n results: T[];\n}\n\nexport interface PaginationOptions {\n limit?: number;\n concurrency?: number;\n}\n\nexport async function* paginate<T>(\n fetchFn: (offset: number, limit: number) => Promise<VintraceResult<PaginatedResponse<T>>>,\n options: PaginationOptions = {}\n): AsyncGenerator<T> {\n const limit = options.limit ?? 100;\n let offset = 0;\n let hasMore = true;\n\n while (hasMore) {\n const [response, error] = await fetchFn(offset, limit);\n\n if (error) {\n throw error;\n }\n\n if (response === null) {\n break;\n }\n\n for (const item of response.results) {\n yield item;\n }\n\n offset += limit;\n hasMore = response.next !== null;\n }\n}\n\nexport async function batchGet<T>(\n ids: string[],\n fetchFn: (id: string) => Promise<VintraceResult<T>>,\n options: { concurrency?: number } = {}\n): Promise<VintraceResult<T[]>> {\n const concurrency = options.concurrency ?? 5;\n const errors: VintraceError[] = [];\n const results: T[] = [];\n\n for (let i = 0; i < ids.length; i += concurrency) {\n const batch = ids.slice(i, i + concurrency);\n const batchResults = await Promise.allSettled(batch.map((id) => fetchFn(id)));\n\n for (const result of batchResults) {\n if (result.status === 'fulfilled') {\n const [data, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (data !== null) {\n results.push(data);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [results, null];\n}\n","import { VintraceResult } from '../types/result';\nimport { VintraceError, VintraceAggregateError } from './errors';\n\n/**\n * Fetch multiple items by id in parallel (all at once), collecting errors.\n * Returns VintraceAggregateError if any individual request fails.\n */\nexport async function batchFetch<T>(\n ids: string[],\n fetchFn: (id: string) => Promise<VintraceResult<T>>\n): Promise<VintraceResult<T[]>> {\n const results = await Promise.allSettled(ids.map((id) => fetchFn(id)));\n const errors: VintraceError[] = [];\n const data: T[] = [];\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n const [item, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (item !== null) {\n data.push(item);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [data, null];\n}\n","import { z } from 'zod';\n\nexport const ExtIdentifiableEntitySchema = z.object({\n id: z.number().optional(),\n extId: z.string().optional(),\n name: z.string().optional(),\n});\n\nexport const IdentifiableEntitySchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n});\n\nexport const CodedIdentifiableEntitySchema = z.object({\n id: z.number().optional(),\n code: z.string().optional(),\n});\n\nexport const ResourceLinkSchema = z.object({\n rel: z.string().optional(),\n href: z.string().optional(),\n});\n\nexport const FieldValuePairSchema = z.object({\n fieldName: z.string().optional(),\n value: z.unknown().optional(),\n});\n\nexport const WorkOrderJobSchema = z.object({\n id: z.number().optional(),\n type: z.enum(['WINERY', 'MRP']).optional(),\n jobNumber: z.number().optional(),\n status: z\n .enum([\n 'INCOMPLETE',\n 'ASSIGNED',\n 'COMPLETED',\n 'ROLLBACK_REPLAY',\n 'IN_PROGRESS',\n 'PENDING_APPROVAL',\n ])\n .optional(),\n scheduledTime: z.number().optional(),\n finishedTime: z.number().optional(),\n link: ResourceLinkSchema.optional(),\n});\n\nexport const WineryWorkOrderJobSchema = WorkOrderJobSchema.extend({\n operationType: z.string().optional(),\n});\n\nexport const WorkOrderSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n assignedTo: ExtIdentifiableEntitySchema.optional(),\n issuedBy: ExtIdentifiableEntitySchema.optional(),\n status: z\n .enum(['DRAFT', 'READY', 'IN_PROGRESS', 'SUBMITTED', 'COMPLETED', 'CANCELLED', 'REPLAY'])\n .optional(),\n scheduledTime: z.number().optional(),\n summary: z.string().optional(),\n jobs: WineryWorkOrderJobSchema.array().optional(),\n});\n\nexport const GetWorkOrdersSuccessResponseSchema = z.object({\n totalResults: z.number().optional(),\n offset: z.number().optional(),\n limit: z.number().optional(),\n first: z.string().optional(),\n previous: z.string().optional(),\n next: z.string().optional(),\n last: z.string().optional(),\n results: WorkOrderSchema.array().optional(),\n});\n\nexport const ProductLiveMetricMeasurementSchema = z.object({\n name: z.string().optional(),\n value: z.number().optional(),\n unit: z.string().optional(),\n maxVal: z.number().optional(),\n});\n\nexport const ProductLiveMetricSchema = z.object({\n name: z.string().optional(),\n description: z.string().optional(),\n measurements: ProductLiveMetricMeasurementSchema.array().optional(),\n});\n\nexport const VolumeSchema = z.object({\n value: z.number().optional(),\n unit: z.string().optional(),\n});\n\nexport const BeverageTypePropertiesSchema = z.record(z.string(), z.unknown());\n\nexport const ProductSchema = z.object({\n id: z.number().optional(),\n batchCode: z.string().optional(),\n vesselId: z.number().optional(),\n description: z.string().optional(),\n descriptionCanEdit: z.boolean().optional(),\n volume: VolumeSchema.optional(),\n vesselCode: z.string().optional(),\n hasDipTable: z.boolean().optional(),\n dipTableEndpoint: z.string().optional(),\n colour: z.string().optional(),\n physicalProductState: z.string().optional(),\n vesselType: z.string().optional(),\n productStatus: z.string().optional(),\n productAnalysisEndpoint: z.string().optional(),\n productCompositionEndpoint: z.string().optional(),\n productEndpoint: z.string().optional(),\n liveMetrics: ProductLiveMetricSchema.array().optional(),\n fieldValuePairs: FieldValuePairSchema.array().optional(),\n canAccessNotes: z.boolean().optional(),\n notesCount: z.number().optional(),\n notesEndpoint: z.string().optional(),\n beverageTypeProperties: BeverageTypePropertiesSchema.optional(),\n});\n\nexport const ProductVesselDetailsSchema = z.object({\n vesselId: z.number().optional(),\n containerType: z\n .enum(['Tank', 'Barrel', 'Barrel group', 'Bin group', 'Press', 'Bin', 'Tanker'])\n .optional(),\n});\n\nexport const ProductResponseSchema = z.object({\n status: z.string().optional(),\n product: ProductSchema.optional(),\n vessel: ProductVesselDetailsSchema.optional(),\n});\n\nexport const ProductListResponseSchema = z.object({\n status: z.string().optional(),\n products: ProductSchema.array().optional(),\n totalResultCount: z.number().optional(),\n firstResult: z.number().optional(),\n maxResult: z.number().optional(),\n nextURLPath: z.string().nullable().optional(),\n prevURLPath: z.string().nullable().optional(),\n});\n\nexport const ProductUpdateFieldSchema = z.object({\n propertyType: z.string().optional(),\n propertyValue: z.string().optional(),\n propertyId: z.number().optional(),\n});\n\nexport const ProductUpdateDataSchema = z.object({\n productId: z.number().optional(),\n updateFields: ProductUpdateFieldSchema.array().optional(),\n});\n\nexport const ProductUpdateResponseSchema = z.object({\n status: z.string().optional(),\n product: ProductSchema.optional(),\n});\n\nexport const AddressSchema = z.object({\n street1: z.string().nullable(),\n street2: z.string().nullable(),\n city: z.string().nullable(),\n state: z.string().nullable(),\n postalCode: z.string().nullable(),\n country: z.string().nullable(),\n});\n\nexport const SendToAddressSchema = z.object({\n name: z.string().nullable(),\n phone: z.string().nullable(),\n address: AddressSchema.nullable(),\n});\n\nexport const TaxBreakdownSchema = z.object({\n name: z.string(),\n amount: z.number(),\n ratePct: z.number(),\n inclusive: z.boolean(),\n});\n\nexport const SalesOrderItemSchema = z.object({\n id: z.number().optional(),\n itemId: z.number().optional(),\n itemName: z.string().optional(),\n unitPrice: z.number().optional(),\n quantity: z.number().optional(),\n unitOfMeasure: z.string().nullable(),\n discountPct: z.number().nullable(),\n adjustment: z.number().nullable(),\n taxAmount: z.number().optional(),\n lineTotal: z.number().optional(),\n accountId: z.number().optional(),\n accountCode: z.string().optional(),\n taxRateId: z.number().optional(),\n taxRateName: z.string().nullable(),\n});\n\nexport const PriceDetailsSchema = z.object({\n countryCurrencyCode: z.string().optional(),\n taxPolicy: z.string().optional(),\n});\n\nexport const SalesOrderSchema = z.object({\n id: z.number().optional(),\n invoiceDate: z.number().nullable(),\n invoiceDateAsText: z.string(),\n customerId: z.number().optional(),\n customerName: z.string().optional(),\n sendTo: SendToAddressSchema.optional(),\n salesType: z.string().optional(),\n salesPriceListId: z.number().nullable(),\n salesPriceListName: z.string().nullable(),\n priceDetails: PriceDetailsSchema.optional(),\n salesOrderStatus: z.string().optional(),\n salesOrderItems: SalesOrderItemSchema.array().optional(),\n code: z.string().optional(),\n description: z.string().nullable(),\n reference: z.string().nullable(),\n orderDate: z.number().optional(),\n orderDateAsText: z.string(),\n wineryId: z.number().nullable(),\n wineryName: z.string().nullable(),\n fulfillment: z.string().optional(),\n fulfillmentDate: z.number().nullable(),\n fulfillmentDateAsText: z.string(),\n salesRegionId: z.number().nullable(),\n salesRegionCode: z.string().nullable(),\n notes: z.string().nullable(),\n customerPickup: z.boolean().optional(),\n disableAccountsSync: z.boolean().optional(),\n subTotal: z.number().optional(),\n taxBreakdown: TaxBreakdownSchema.array().optional(),\n total: z.number().optional(),\n acctReference: z.string().nullable(),\n posSaleReference: z.string().nullable(),\n ignoreStockError: z.boolean().optional(),\n});\n\nexport const SalesOrderResponseSchema = z.object({\n status: z.string(),\n message: z.string().nullable(),\n salesOrders: SalesOrderSchema.array(),\n totalResultCount: z.number().optional(),\n firstResult: z.number().optional(),\n maxResult: z.number().optional(),\n nextURLPath: z.string().nullable().optional(),\n prevURLPath: z.string().nullable().optional(),\n});\n\nexport const SalesOrderUpdateResponseSchema = z.object({\n status: z.string(),\n message: z.string().nullable(),\n salesOrder: SalesOrderSchema.optional(),\n});\n\nexport const RefundLineItemSchema = z.object({\n id: z.number().optional(),\n itemId: z.number().optional(),\n itemName: z.string().optional(),\n unitPrice: z.number().optional(),\n returnQuantity: z.number().optional(),\n returnTotal: z.number().optional(),\n taxAmount: z.number().optional(),\n});\n\nexport const RefundSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n refundDate: z.number().optional(),\n refundDateAsText: z.string(),\n reference: z.string().nullable(),\n stockReturned: z.boolean().optional(),\n storageAreaId: z.number().nullable(),\n storageAreaName: z.string().nullable(),\n customerId: z.number().optional(),\n customerName: z.string().optional(),\n refundStatus: z.string().optional(),\n notes: z.string().nullable(),\n salesOrderId: z.number().optional(),\n salesOrderName: z.string().optional(),\n subTotal: z.number().optional(),\n total: z.number().optional(),\n taxBreakdown: TaxBreakdownSchema.array().optional(),\n refundLineItems: RefundLineItemSchema.array().optional(),\n posSaleReference: z.string().nullable(),\n disableAccountsSync: z.boolean().optional(),\n acctReference: z.string().nullable(),\n});\n\nexport const RefundResponseSchema = z.object({\n status: z.string(),\n message: z.string().nullable(),\n refunds: RefundSchema.array(),\n totalResultCount: z.number().optional(),\n firstResult: z.number().optional(),\n maxResult: z.number().optional(),\n nextURLPath: z.string().nullable().optional(),\n prevURLPath: z.string().nullable().optional(),\n});\n\nexport const RefundUpdateResponseSchema = z.object({\n status: z.string(),\n message: z.string().nullable(),\n refund: RefundSchema.optional(),\n});\n\nexport const PartySchema = z.object({\n id: z.number().optional(),\n primeName: z.string().optional(),\n givenName: z.string().nullable(),\n phone: z.string().nullable(),\n email: z.string().nullable(),\n address: AddressSchema.optional(),\n isOrganization: z.boolean().optional(),\n});\n\nexport const PartyResponseSchema = z.object({\n status: z.string(),\n message: z.string().nullable(),\n parties: PartySchema.array(),\n totalResultCount: z.number().optional(),\n firstResult: z.number().optional(),\n maxResult: z.number().optional(),\n nextURLPath: z.string().nullable().optional(),\n prevURLPath: z.string().nullable().optional(),\n});\n\nexport const WorkOrderJobDetailSchema = z.object({\n id: z.number().optional(),\n code: z.string().optional(),\n scheduledDate: z.number().nullable(),\n finishedDate: z.number().nullable(),\n scheduledDateAsText: z.string(),\n finishedDateAsText: z.string(),\n status: z.string().optional(),\n assignedBy: z.string().optional(),\n assignedTo: z.string().optional(),\n summaryText: z.string().optional(),\n miniSummaryText: z.string().optional(),\n jobColour: z.string().optional(),\n jobNumber: z.number().optional(),\n stepText: z.string().nullable(),\n steps: z.array(z.unknown()).optional(),\n endpointURL: z.string().optional(),\n jobVersion: z.number().optional(),\n workOrderId: z.number().optional(),\n});\n\nexport const WorkOrderDetailSchema = z.object({\n id: z.number().optional(),\n code: z.string().optional(),\n jobCount: z.number().optional(),\n jobCountText: z.string().optional(),\n status: z.string().optional(),\n assignedTo: z.string().optional(),\n assignedBy: z.string().optional(),\n assignedDate: z.number().optional(),\n scheduledDate: z.number().nullable(),\n assignedDateAsText: z.string(),\n scheduledDateAsText: z.string(),\n canAssign: z.boolean().optional(),\n summary: z.string().optional(),\n indicators: z.array(z.string()).optional(),\n bond: z.string().nullable(),\n winery: z.string().nullable(),\n jobs: WorkOrderJobDetailSchema.array().optional(),\n colourCode: z.string().optional(),\n endpointURL: z.string().optional(),\n});\n\nexport const WorkOrderSearchResponseSchema = z.object({\n firstResult: z.number().optional(),\n maxResult: z.number().optional(),\n totalResultCount: z.number().optional(),\n nextURLPath: z.string().nullable(),\n prevURLPath: z.string().nullable(),\n listText: z.string().optional(),\n workOrders: WorkOrderDetailSchema.array().optional(),\n});\n\nexport const AssignWorkDataSchema = z.object({\n workOrderId: z.number().optional(),\n});\n\nexport const AssignWorkResponseSchema = z.object({\n status: z.string(),\n message: z.string().nullable(),\n jobEndpointURL: z.string().nullable(),\n workOrderEndpointURL: z.string().optional(),\n});\n\nexport const SubmitJobFieldSchema = z.object({\n fieldId: z.string(),\n value: z.string().optional(),\n});\n\nexport const SubmitJobRequestSchema = z.object({\n jobId: z.number().optional(),\n submitType: z.string().optional(),\n fields: SubmitJobFieldSchema.array().optional(),\n});\n\nexport const SubmitWorkOrderStepsResponseSchema = z.object({\n status: z.string(),\n message: z.string().optional(),\n});\n\nexport const PartyUpdateResponseSchema = z.object({\n status: z.string(),\n message: z.string().nullable(),\n party: PartySchema.optional(),\n});\n\n// Partial write schemas — used for request validation on create/update methods\n// where callers supply Partial<T> rather than the full entity shape.\nexport const SalesOrderWriteSchema = SalesOrderSchema.partial();\nexport const RefundWriteSchema = RefundSchema.partial();\nexport const PartyWriteSchema = PartySchema.partial();\n\nexport const TransactionSearchParamsSchema = z.object({\n dateFrom: z.string().optional(),\n dateTo: z.string().optional(),\n ownerName: z.string().optional(),\n batchName: z.string().optional(),\n wineryName: z.string().optional(),\n maxResults: z.number().optional(),\n firstResult: z.number().optional(),\n});\n\nexport const IntakeOperationSearchParamsSchema = z.object({\n modifiedSince: z.string().optional(),\n operationId: z.number().optional(),\n processId: z.number().optional(),\n deliveryDocket: z.string().optional(),\n intakeDocket: z.string().optional(),\n externalWeighTag: z.string().optional(),\n externalSystemBlocksOnly: z.boolean().optional(),\n externalBlockId: z.string().optional(),\n blockId: z.number().optional(),\n blockName: z.string().optional(),\n vineyardId: z.number().optional(),\n vineyardName: z.string().optional(),\n wineryId: z.number().optional(),\n wineryName: z.string().optional(),\n growerType: z.string().optional(),\n growerId: z.number().optional(),\n growerName: z.string().optional(),\n ownerId: z.number().optional(),\n ownerName: z.string().optional(),\n vintage: z.string().optional(),\n recordedAfter: z.string().optional(),\n recordedBefore: z.string().optional(),\n customAdapter: z.string().optional(),\n maxResults: z.number().optional(),\n firstResult: z.number().optional(),\n});\n\nexport const SampleOperationSearchParamsSchema = z.object({\n modifiedSince: z.string().optional(),\n operationId: z.number().optional(),\n processId: z.number().optional(),\n externalSystemBlocksOnly: z.boolean().optional(),\n externalBlockId: z.string().optional(),\n blockId: z.number().optional(),\n blockName: z.string().optional(),\n vineyardId: z.number().optional(),\n vineyardName: z.string().optional(),\n growerId: z.number().optional(),\n growerName: z.string().optional(),\n ownerId: z.number().optional(),\n ownerName: z.string().optional(),\n vintage: z.string().optional(),\n recordedAfter: z.string().optional(),\n recordedBefore: z.string().optional(),\n customAdapter: z.string().optional(),\n maxResults: z.number().optional(),\n firstResult: z.number().optional(),\n});\n\nexport const InventoryListParamsSchema = z.object({\n max: z.string().optional(),\n first: z.string().optional(),\n date: z.string().optional(),\n stockType: z.string().optional(),\n ownerName: z.string().optional(),\n showEquivalentType: z.string().optional(),\n breakoutCosting: z.boolean().optional(),\n disableCommitHeaders: z.boolean().optional(),\n});\n\nexport const SearchListParamsSchema = z.object({\n type: z.string(),\n first: z.string().optional(),\n startsWith: z.string().optional(),\n exactMatch: z.boolean().optional(),\n max: z.string().optional(),\n});\n\nexport const MrpStockHistoryParamsSchema = z.object({\n firstResult: z.number(),\n maxResult: z.number(),\n});\n\nexport const MrpStockNotesParamsSchema = z.object({\n firstResult: z.number().optional(),\n maxResult: z.number().optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Product Analysis\n// ---------------------------------------------------------------------------\n\nexport const RateOfChangeSchema = z.object({\n value: z.number().nullable(),\n sign: z.string().nullable(),\n absValue: z.number().nullable(),\n unit: z.string().nullable(),\n description: z.string().nullable(),\n});\n\nexport const AnalysisMeasurementSchema = z.object({\n value: z.string(),\n rateOfChange: RateOfChangeSchema.nullable(),\n measurementDateText: z.string(),\n measurementDate: z.number(),\n resultId: z.number(),\n processId: z.number(),\n canDelete: z.boolean(),\n canEdit: z.boolean(),\n canReverse: z.boolean(),\n measurementValidity: z.string(),\n});\n\nexport const AnalysisMetricDataSchema = z.object({\n id: z.number(),\n name: z.string(),\n unit: z.string(),\n dataType: z.string(),\n dataTypeValues: z.unknown().nullable(),\n minVal: z.number().nullable(),\n maxVal: z.number().nullable(),\n grouping: z.unknown().nullable(),\n canAddValue: z.boolean(),\n measurements: AnalysisMeasurementSchema.array(),\n result: z.unknown().nullable(),\n});\n\nexport const ProductMetricDataSchema = z.object({\n id: z.number(),\n name: z.string(),\n nextURL: z.string().nullable(),\n metricDataList: AnalysisMetricDataSchema.array(),\n});\n\nexport const ProductAnalysisResponseSchema = z.object({\n productId: z.number(),\n batchCode: z.string(),\n description: z.string(),\n canAddResult: z.boolean(),\n productMetricDataList: ProductMetricDataSchema.array(),\n});\n\nexport const ProductAnalysisParamsSchema = z.object({\n startDate: z.string().optional(),\n endDate: z.string().optional(),\n metricId: z.number().optional(),\n weighting: z.number().optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Product Composition\n// ---------------------------------------------------------------------------\n\nexport const CompositionComponentSchema = z.object({\n productId: z.number().optional(),\n batchCode: z.string().optional(),\n description: z.string().optional(),\n vintage: z.string().nullable().optional(),\n variety: z.string().nullable().optional(),\n region: z.string().nullable().optional(),\n percentage: z.number().optional(),\n volume: VolumeSchema.optional(),\n});\n\nexport const ProductCompositionResponseSchema = z.object({\n productId: z.number().optional(),\n batchCode: z.string().optional(),\n description: z.string().optional(),\n components: CompositionComponentSchema.array().optional(),\n});\n\nexport type WorkOrder = z.infer<typeof WorkOrderSchema>;\nexport type GetWorkOrdersSuccessResponse = z.infer<typeof GetWorkOrdersSuccessResponseSchema>;\nexport type Product = z.infer<typeof ProductSchema>;\nexport type ProductResponse = z.infer<typeof ProductResponseSchema>;\nexport type ProductListResponse = z.infer<typeof ProductListResponseSchema>;\nexport type ProductUpdateResponse = z.infer<typeof ProductUpdateResponseSchema>;\nexport type SalesOrder = z.infer<typeof SalesOrderSchema>;\nexport type SalesOrderResponse = z.infer<typeof SalesOrderResponseSchema>;\nexport type SalesOrderUpdateResponse = z.infer<typeof SalesOrderUpdateResponseSchema>;\nexport type Refund = z.infer<typeof RefundSchema>;\nexport type RefundResponse = z.infer<typeof RefundResponseSchema>;\nexport type RefundUpdateResponse = z.infer<typeof RefundUpdateResponseSchema>;\nexport type Party = z.infer<typeof PartySchema>;\nexport type PartyResponse = z.infer<typeof PartyResponseSchema>;\nexport type WorkOrderDetail = z.infer<typeof WorkOrderDetailSchema>;\nexport type WorkOrderSearchResponse = z.infer<typeof WorkOrderSearchResponseSchema>;\nexport type AssignWorkResponse = z.infer<typeof AssignWorkResponseSchema>;\nexport type SubmitWorkOrderStepsResponse = z.infer<typeof SubmitWorkOrderStepsResponseSchema>;\nexport type PartyUpdateResponse = z.infer<typeof PartyUpdateResponseSchema>;\nexport type ProductUpdateData = z.infer<typeof ProductUpdateDataSchema>;\nexport type TransactionSearchParams = z.infer<typeof TransactionSearchParamsSchema>;\nexport type IntakeOperationSearchParams = z.infer<typeof IntakeOperationSearchParamsSchema>;\nexport type SampleOperationSearchParams = z.infer<typeof SampleOperationSearchParamsSchema>;\nexport type InventoryListParams = z.infer<typeof InventoryListParamsSchema>;\nexport type SearchListParams = z.infer<typeof SearchListParamsSchema>;\nexport type MrpStockHistoryParams = z.infer<typeof MrpStockHistoryParamsSchema>;\nexport type MrpStockNotesParams = z.infer<typeof MrpStockNotesParamsSchema>;\nexport type RateOfChange = z.infer<typeof RateOfChangeSchema>;\nexport type AnalysisMeasurement = z.infer<typeof AnalysisMeasurementSchema>;\nexport type AnalysisMetricData = z.infer<typeof AnalysisMetricDataSchema>;\nexport type ProductMetricData = z.infer<typeof ProductMetricDataSchema>;\nexport type ProductAnalysisResponse = z.infer<typeof ProductAnalysisResponseSchema>;\nexport type ProductAnalysisParams = z.infer<typeof ProductAnalysisParamsSchema>;\nexport type CompositionComponent = z.infer<typeof CompositionComponentSchema>;\nexport type ProductCompositionResponse = z.infer<typeof ProductCompositionResponseSchema>;\nexport type SalesOrderWrite = z.infer<typeof SalesOrderWriteSchema>;\nexport type RefundWrite = z.infer<typeof RefundWriteSchema>;\nexport type PartyWrite = z.infer<typeof PartyWriteSchema>;\n\n// ---------------------------------------------------------------------------\n// Generic Paginated Response Schemas (v7 style)\n// ---------------------------------------------------------------------------\n\nexport const PaginatedResponseSchema = <T extends z.ZodType>(itemSchema: T) =>\n z.object({\n totalResults: z.number().optional(),\n offset: z.number().optional(),\n limit: z.number().optional(),\n first: z.string().nullable().optional(),\n previous: z.string().nullable().optional(),\n next: z.string().nullable().optional(),\n last: z.string().nullable().optional(),\n results: z.array(itemSchema).optional(),\n });\n\nexport const VineyardIdentifiableEntitySchema = IdentifiableEntitySchema.extend({\n name: z.string(),\n grower: ExtIdentifiableEntitySchema,\n});\n\nexport const GradingSchema = z.object({\n id: z.number().optional(),\n value: z.string().optional(),\n scaleName: z.string().optional(),\n scaleId: z.number().optional(),\n});\n\nexport const BulkStockSchema = z.object({\n totalVolume: VolumeSchema.optional(),\n equivalentVolume: VolumeSchema.optional(),\n equivalentWeight: VolumeSchema.optional(),\n compWeighting: z.number().optional(),\n percentageOfFruit: z.number().optional(),\n batchId: z.number().optional(),\n batchName: z.string().optional(),\n grading: GradingSchema.nullable().optional(),\n});\n\nexport const FruitPlacementSchema = z.object({\n vintage: z.string().optional(),\n bulkStocks: z.array(BulkStockSchema).optional(),\n});\n\nexport const BlockDataSchema = z.object({\n id: z.number(),\n code: z.string().optional(),\n name: z.string(),\n extId: z.string().optional(),\n inactive: z.boolean().optional(),\n description: z.string().optional(),\n rowNumbers: z.string().optional(),\n estate: z.boolean().optional(),\n grower: ExtIdentifiableEntitySchema.optional(),\n vineyard: VineyardIdentifiableEntitySchema.optional(),\n region: IdentifiableEntitySchema.optional(),\n subRegion: IdentifiableEntitySchema.optional(),\n variety: IdentifiableEntitySchema.optional(),\n intendedUse: IdentifiableEntitySchema.optional(),\n grading: GradingSchema.nullable().optional(),\n fruitPlacement: FruitPlacementSchema.optional(),\n});\n\nexport const GetBlocksSuccessResponseSchema = PaginatedResponseSchema(BlockDataSchema);\n\nexport const BlockSchema = ExtIdentifiableEntitySchema.extend({\n extId: z.string(),\n name: z.string(),\n estate: z.boolean().optional(),\n vineyard: VineyardIdentifiableEntitySchema,\n variety: IdentifiableEntitySchema,\n countyCode: z.string().optional(),\n inactive: z.boolean().optional(),\n noOfVines: z.number().optional(),\n area: z.number().optional(),\n rootStock: IdentifiableEntitySchema.optional(),\n clone: IdentifiableEntitySchema.optional(),\n vineSpacing: z.string().optional(),\n rowSpacing: z.string().optional(),\n soilProfile: z.string().optional(),\n trellis: IdentifiableEntitySchema.optional(),\n aspect: z.string().optional(),\n plantedTime: z.number().optional(),\n pruningType: z.string().optional(),\n averageGradient: z.number().optional(),\n irrigationType: z.string().optional(),\n frostProtection: z.string().optional(),\n organic: z.boolean().optional(),\n organicCertifiedTime: z.number().optional(),\n township: z.string().optional(),\n range: z.string().optional(),\n section: z.string().optional(),\n emitterRate: z.number().optional(),\n emitterSize: z.string().optional(),\n siteId: z.string().optional(),\n noOfRows: z.number().optional(),\n districtCode: z.string().optional(),\n regionalAdminCode: z.string().optional(),\n comments: z.string().optional(),\n code: z.string().optional(),\n defaultHarvestMethod: z.string().optional(),\n description: z.string().optional(),\n graftedDate: z.number().optional(),\n intendedUse: IdentifiableEntitySchema.optional(),\n rowNumbers: z.string().optional(),\n vineStructure: IdentifiableEntitySchema.optional(),\n});\n\nexport const BlockResponseSchema = z.object({\n data: BlockSchema,\n});\n\n// ---------------------------------------------------------------------------\n// v6-style paginated responses: totalResultCount + first/max params\n// ---------------------------------------------------------------------------\n\nexport const V6PaginatedResponseSchema = z.object({\n totalResultCount: z.number().optional(),\n firstResult: z.number().optional(),\n maxResult: z.number().optional(),\n nextURLPath: z.string().nullable().optional(),\n prevURLPath: z.string().nullable().optional(),\n results: z.array(z.unknown()).optional(),\n});\n\nexport const InventoryResponseSchema = V6PaginatedResponseSchema;\nexport const TransactionSearchResponseSchema = V6PaginatedResponseSchema;\nexport const IntakeOperationSearchResponseSchema = V6PaginatedResponseSchema;\nexport const SampleOperationSearchResponseSchema = z.object({\n status: z.string().optional(),\n message: z.string().nullable().optional(),\n resultCount: z.number().nullable().optional(),\n resultLimit: z.number().optional(),\n nextResult: z.number().nullable().optional(),\n samples: z.array(z.unknown()).optional(),\n});\nexport const SearchListResponseSchema = V6PaginatedResponseSchema;\n\n// ---------------------------------------------------------------------------\n// Type exports for new schemas\n// ---------------------------------------------------------------------------\n\nexport type GetBlocksSuccessResponse = z.infer<typeof GetBlocksSuccessResponseSchema>;\nexport type BlockData = z.infer<typeof BlockDataSchema>;\nexport type Block = z.infer<typeof BlockSchema>;\nexport type BlockResponse = z.infer<typeof BlockResponseSchema>;\nexport type VineyardIdentifiableEntity = z.infer<typeof VineyardIdentifiableEntitySchema>;\nexport type Grading = z.infer<typeof GradingSchema>;\nexport type BulkStock = z.infer<typeof BulkStockSchema>;\nexport type FruitPlacement = z.infer<typeof FruitPlacementSchema>;\nexport type InventoryResponse = z.infer<typeof InventoryResponseSchema>;\nexport type TransactionSearchResponse = z.infer<typeof TransactionSearchResponseSchema>;\nexport type IntakeOperationSearchResponse = z.infer<typeof IntakeOperationSearchResponseSchema>;\nexport type SampleOperationSearchResponse = z.infer<typeof SampleOperationSearchResponseSchema>;\nexport type SearchListResponse = z.infer<typeof SearchListResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Vessel Details Report\n// ---------------------------------------------------------------------------\n\nconst MeasurementSchema = z.object({\n value: z.number().optional(),\n unit: z.string().optional(),\n});\n\nconst WinerySchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n businessUnit: z.string().optional(),\n});\n\nconst VesselGradingSchema = z.object({\n scaleId: z.number().optional(),\n scaleName: z.string().optional(),\n valueId: z.number().optional(),\n valueName: z.string().optional(),\n});\n\nconst WineBatchDetailsSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n description: z.string().optional(),\n vintage: z.string().optional(),\n designatedRegion: CodedIdentifiableEntitySchema.optional(),\n designatedSubRegion: CodedIdentifiableEntitySchema.optional(),\n designatedVariety: CodedIdentifiableEntitySchema.optional(),\n program: z.string().optional(),\n productCategory: CodedIdentifiableEntitySchema.optional(),\n designatedProduct: CodedIdentifiableEntitySchema.optional(),\n grading: VesselGradingSchema.optional(),\n});\n\nconst ProductStateSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n expectedLossesPercentage: z.number().optional(),\n});\n\nconst TaxDetailsSchema = z.object({\n bond: IdentifiableEntitySchema.optional(),\n name: z.string().optional(),\n taxState: z.string().optional(),\n taxClass: IdentifiableEntitySchema.optional(),\n federalName: z.string().optional(),\n stateName: z.string().optional(),\n});\n\nconst AllocationSliceSchema = z.object({\n product: CodedIdentifiableEntitySchema.optional(),\n vintage: z.string().optional(),\n itemCode: z.string().optional(),\n allocationVolume: MeasurementSchema.optional(),\n allocationPercentageOfVessel: z.number().optional(),\n});\n\nconst CompositionSliceSchema = z.object({\n vintage: z.string().optional(),\n variety: CodedIdentifiableEntitySchema.optional(),\n region: CodedIdentifiableEntitySchema.optional(),\n subRegion: CodedIdentifiableEntitySchema.optional(),\n weighting: z.number().optional(),\n percentage: z.number().optional(),\n componentVolume: MeasurementSchema.optional(),\n});\n\nconst CostBreakdownSchema = z.object({\n total: z.number().optional(),\n fruit: z.number().optional(),\n overhead: z.number().optional(),\n storage: z.number().optional(),\n additive: z.number().optional(),\n bulk: z.number().optional(),\n packaging: z.number().optional(),\n operation: z.number().optional(),\n freight: z.number().optional(),\n other: z.number().optional(),\n});\n\nconst LiveMetricSchema = z.object({\n name: z.string().optional(),\n value: z.number().optional(),\n interfaceMappedName: z.string().optional(),\n});\n\nexport const AnalysisResultSchema = z.object({\n name: z.string(),\n value: z.number().nullable().optional(),\n interfaceMappedName: z.string().nullable().optional(),\n nonNumericValue: z.string().nullable().optional(),\n});\n\nexport type AnalysisResult = z.infer<typeof AnalysisResultSchema>;\n\nconst SparklingInfoSchema = z.object({\n state: z.string().optional(),\n});\n\nexport const BulkWineDetailsSchema = z.object({\n id: z.number().optional(),\n productId: z.number().optional(),\n name: z.string().optional(),\n description: z.string().optional(),\n vesselType: z.string().optional(),\n detailsAsAt: z.number().optional(),\n sparklingInfo: SparklingInfoSchema.optional(),\n beverageType: IdentifiableEntitySchema.optional(),\n owner: ExtIdentifiableEntitySchema.optional(),\n winery: WinerySchema.optional(),\n wineBatch: WineBatchDetailsSchema.optional(),\n productState: ProductStateSchema.optional(),\n volume: MeasurementSchema.optional(),\n capacity: MeasurementSchema.optional(),\n ullage: MeasurementSchema.optional(),\n ttbDetails: TaxDetailsSchema.optional(),\n liveMetrics: z.array(LiveMetricSchema).optional(),\n cost: CostBreakdownSchema.optional(),\n composition: z.array(CompositionSliceSchema).optional(),\n allocations: z.array(AllocationSliceSchema).optional(),\n unallocatedVolume: MeasurementSchema.optional(),\n unallocatedPercentageOfVessel: z.number().optional(),\n});\n\nexport const GetBulkWineDetailsReportResponseSchema = z.object({\n totalResults: z.number().optional(),\n offset: z.number().optional(),\n limit: z.number().optional(),\n first: z.string().nullable().optional(),\n previous: z.string().nullable().optional(),\n next: z.string().nullable().optional(),\n last: z.string().nullable().optional(),\n results: z.array(BulkWineDetailsSchema).optional(),\n});\n\nexport type BulkWineDetails = z.infer<typeof BulkWineDetailsSchema>;\nexport type GetBulkWineDetailsReportResponse = z.infer<\n typeof GetBulkWineDetailsReportResponseSchema\n>;\nexport type V6PaginatedResponse = z.infer<typeof V6PaginatedResponseSchema>;\n\nexport const ProductJobAttachmentSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n url: z.string().optional(),\n});\n\nexport const ProductJobSchema = z.object({\n operationId: z.number(),\n processId: z.number(),\n operatorName: z.string().optional(),\n completedDate: z.number().optional(),\n completedDateText: z.string().optional(),\n summary: z.string().optional(),\n operationName: z.string().optional(),\n workOrderNumber: z.string().nullable().optional(),\n reversible: z.boolean().optional(),\n attachments: ProductJobAttachmentSchema.array().optional(),\n});\n\nexport const ProductJobDetailsSchema = z.object({\n productId: z.number(),\n batchId: z.number().optional(),\n vesselId: z.number().optional(),\n batchCode: z.string().nullable().optional(),\n vesselCode: z.string().nullable().optional(),\n canReverseJobs: z.boolean().optional(),\n jobs: ProductJobSchema.array().optional(),\n});\n\nexport const ProductJobResponseSchema = z.object({\n status: z.string(),\n message: z.string().nullable().optional(),\n jobDetails: ProductJobDetailsSchema,\n});\n\nexport type ProductJobAttachment = z.infer<typeof ProductJobAttachmentSchema>;\nexport type ProductJob = z.infer<typeof ProductJobSchema>;\nexport type ProductJobDetails = z.infer<typeof ProductJobDetailsSchema>;\nexport type ProductJobResponse = z.infer<typeof ProductJobResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Costs - Business Unit Transactions\n// ---------------------------------------------------------------------------\n\nexport const TransactionDetailsSchema = z.object({\n activityDate: z.number().optional(),\n postedDate: z.number().optional(),\n resultOfCorrection: z.boolean().optional(),\n activityId: z.string().optional(),\n postedId: z.number().optional(),\n activityType: z.string().optional(),\n activitySummary: z.string().optional(),\n primaryCostTarget: z.string().optional(),\n secondaryCostTarget: z.string().optional(),\n primaryWinery: WinerySchema.optional(),\n secondaryWinery: WinerySchema.optional(),\n location: z.string().optional(),\n vessel: z.string().optional(),\n wineBatch: z.string().optional(),\n productCategory: CodedIdentifiableEntitySchema.optional(),\n program: CodedIdentifiableEntitySchema.optional(),\n volumeDelta: MeasurementSchema.optional(),\n costDelta: CostBreakdownSchema.optional(),\n otherWinery: WinerySchema.optional(),\n notes: z.string().optional(),\n customer: ExtIdentifiableEntitySchema.optional(),\n vendor: ExtIdentifiableEntitySchema.optional(),\n lossReason: IdentifiableEntitySchema.optional(),\n allocationDescription: z.string().optional(),\n impactedAllocations: z\n .array(\n z.object({\n productName: z.string().optional(),\n vintage: z.string().optional(),\n itemCode: z.string().optional(),\n name: z.string().optional(),\n })\n )\n .optional(),\n references: z\n .object({\n bulkSalesOrder: z.string().optional(),\n bulkPurchaseOrder: z.string().optional(),\n externalWorkOrder: z.string().optional(),\n workOrder: z.string().optional(),\n jobNUmber: z.string().optional(),\n billOfLadingNumber: z.string().optional(),\n })\n .optional(),\n});\n\nexport const GetBusinessUnitTransactionsResponseSchema =\n PaginatedResponseSchema(TransactionDetailsSchema);\n\nexport type TransactionDetails = z.infer<typeof TransactionDetailsSchema>;\nexport type GetBusinessUnitTransactionsResponse = z.infer<\n typeof GetBusinessUnitTransactionsResponseSchema\n>;\n\n// ---------------------------------------------------------------------------\n// Block Assessments\n// ---------------------------------------------------------------------------\n\nexport const BlockAssessmentOverviewSchema = z.object({\n id: z.number().optional(),\n blockId: z.number().optional(),\n assessmentDate: z.number().optional(),\n assessmentDateAsText: z.string().optional(),\n vintage: z.string().optional(),\n grade: z.string().optional(),\n score: z.number().optional(),\n brix: z.number().optional(),\n ph: z.number().optional(),\n ta: z.number().optional(),\n ba: z.number().optional(),\n principalMethod: z.string().optional(),\n secondaryMethod: z.string().optional(),\n clone: z.string().optional(),\n region: z.string().optional(),\n subRegion: z.string().optional(),\n vineyard: z.string().optional(),\n blockCode: z.string().optional(),\n blockName: z.string().optional(),\n variety: z.string().optional(),\n});\n\nexport const GetAssessmentsResponseSchema = PaginatedResponseSchema(BlockAssessmentOverviewSchema);\n\nexport type BlockAssessmentOverview = z.infer<typeof BlockAssessmentOverviewSchema>;\nexport type GetAssessmentsResponse = z.infer<typeof GetAssessmentsResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Vineyards\n// ---------------------------------------------------------------------------\n\nexport const VineyardSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n grower: ExtIdentifiableEntitySchema.optional(),\n});\n\nexport const VineyardResponseSchema = z.object({\n data: VineyardSchema.optional(),\n});\n\nexport type Vineyard = z.infer<typeof VineyardSchema>;\nexport type VineyardResponse = z.infer<typeof VineyardResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Maturity Samples\n// ---------------------------------------------------------------------------\n\nexport const MaturitySampleSchema = z.object({\n id: z.number().optional(),\n sampleDate: z.number().optional(),\n sampleDateAsText: z.string().optional(),\n vineyard: z.string().optional(),\n block: z.string().optional(),\n varietal: z.string().optional(),\n vintage: z.string().optional(),\n brix: z.number().optional(),\n ph: z.number().optional(),\n ta: z.number().optional(),\n grade: z.string().optional(),\n});\n\nexport const MaturitySampleResponseSchema = z.object({\n data: MaturitySampleSchema.optional(),\n});\n\nexport type MaturitySample = z.infer<typeof MaturitySampleSchema>;\nexport type MaturitySampleResponse = z.infer<typeof MaturitySampleResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Parties (v7 /identity/parties)\n// ---------------------------------------------------------------------------\n\nexport const PartyV7Schema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n primeName: z.string().optional(),\n givenName: z.string().nullable(),\n phone: z.string().nullable(),\n email: z.string().nullable(),\n isOrganization: z.boolean().optional(),\n address: AddressSchema.optional(),\n});\n\nexport const GetPartiesV7ResponseSchema = PaginatedResponseSchema(PartyV7Schema);\n\nexport type PartyV7 = z.infer<typeof PartyV7Schema>;\nexport type GetPartiesV7Response = z.infer<typeof GetPartiesV7ResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Shipments\n// ---------------------------------------------------------------------------\n\nexport const ShipmentDestinationSchema = z.object({\n name: z.string().optional(),\n address: AddressSchema.optional(),\n});\n\nexport const ShipmentWineDetailsSchema = z.object({\n productId: z.number().optional(),\n productName: z.string().optional(),\n quantity: z.number().optional(),\n volume: MeasurementSchema.optional(),\n});\n\nexport const ShipmentDataSchema = z.object({\n id: z.number().optional(),\n code: z.string().optional(),\n shipmentDate: z.number().optional(),\n shipmentDateAsText: z.string().optional(),\n status: z.string().optional(),\n destination: ShipmentDestinationSchema.optional(),\n wineDetails: ShipmentWineDetailsSchema.array().optional(),\n});\n\nexport const GetShipmentsSuccessResponseSchema = PaginatedResponseSchema(ShipmentDataSchema);\n\nexport type ShipmentDestination = z.infer<typeof ShipmentDestinationSchema>;\nexport type ShipmentWineDetails = z.infer<typeof ShipmentWineDetailsSchema>;\nexport type ShipmentData = z.infer<typeof ShipmentDataSchema>;\nexport type GetShipmentsSuccessResponse = z.infer<typeof GetShipmentsSuccessResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Barrel Treatments\n// ---------------------------------------------------------------------------\n\nexport const BarrelTreatmentTypeSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n code: z.string().optional(),\n});\n\nexport const ShipmentBarrelDetailsSchema = z.object({\n barcode: z.string().optional(),\n vendorBarcode: z.string().optional(),\n quantity: z.number().optional(),\n});\n\nexport const BarrelTreatmentDataSchema = z.object({\n id: z.number().optional(),\n treatmentDate: z.number().optional(),\n treatmentDateAsText: z.string().optional(),\n treatment: BarrelTreatmentTypeSchema.optional(),\n barrels: ShipmentBarrelDetailsSchema.array().optional(),\n});\n\nexport const GetBarrelTreatmentsSuccessResponseSchema =\n PaginatedResponseSchema(BarrelTreatmentDataSchema);\n\nexport type BarrelTreatmentType = z.infer<typeof BarrelTreatmentTypeSchema>;\nexport type ShipmentBarrelDetails = z.infer<typeof ShipmentBarrelDetailsSchema>;\nexport type BarrelTreatmentData = z.infer<typeof BarrelTreatmentDataSchema>;\nexport type GetBarrelTreatmentsSuccessResponse = z.infer<\n typeof GetBarrelTreatmentsSuccessResponseSchema\n>;\n\n// ---------------------------------------------------------------------------\n// Fruit Intakes\n// ---------------------------------------------------------------------------\n\nexport const FruitIntakeSchema = z.object({\n id: z.number().optional(),\n intakeDate: z.number().optional(),\n intakeDateAsText: z.string().optional(),\n deliveryDocket: z.string().optional(),\n intakeDocket: z.string().optional(),\n brix: z.number().optional(),\n ph: z.number().optional(),\n ta: z.number().optional(),\n weight: MeasurementSchema.optional(),\n volume: MeasurementSchema.optional(),\n block: z.string().optional(),\n vineyard: z.string().optional(),\n varietal: z.string().optional(),\n vintage: z.string().optional(),\n grower: z.string().optional(),\n owner: z.string().optional(),\n status: z.string().optional(),\n});\n\nexport const FruitIntakeRequestSchema = FruitIntakeSchema.partial();\n\nexport const CreateFruitIntakeSuccessResponseSchema = z.object({\n data: FruitIntakeSchema.optional(),\n});\n\nexport const UpdateFruitIntakePricingSchema = z.object({\n gross: MeasurementSchema.optional(),\n tare: MeasurementSchema.optional(),\n net: MeasurementSchema.optional(),\n unitPrice: MeasurementSchema.optional(),\n});\n\nexport const UpdateFruitIntakePricingResponseSchema = z.object({\n data: UpdateFruitIntakePricingSchema.optional(),\n});\n\nexport type FruitIntake = z.infer<typeof FruitIntakeSchema>;\nexport type FruitIntakeRequest = z.infer<typeof FruitIntakeRequestSchema>;\nexport type CreateFruitIntakeSuccessResponse = z.infer<\n typeof CreateFruitIntakeSuccessResponseSchema\n>;\nexport type UpdateFruitIntakePricing = z.infer<typeof UpdateFruitIntakePricingSchema>;\nexport type UpdateFruitIntakePricingResponse = z.infer<\n typeof UpdateFruitIntakePricingResponseSchema\n>;\n\nexport const UpdateMetricsSchema = z.object({\n metrics: z.array(AnalysisResultSchema).optional(),\n});\n\nexport const UpdateMetricsResponseSchema = z.object({\n data: UpdateMetricsSchema.optional(),\n});\n\nexport type UpdateMetrics = z.infer<typeof UpdateMetricsSchema>;\nexport type UpdateMetricsResponse = z.infer<typeof UpdateMetricsResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Bulk Intakes\n// ---------------------------------------------------------------------------\n\nexport const BulkIntakeSchema = z.object({\n id: z.number().optional(),\n code: z.string().optional(),\n intakeDate: z.number().optional(),\n intakeDateAsText: z.string().optional(),\n supplier: z.string().optional(),\n vintage: z.string().optional(),\n varietal: z.string().optional(),\n volume: MeasurementSchema.optional(),\n status: z.string().optional(),\n});\n\nexport const GetBulkIntakesSuccessResponseSchema = PaginatedResponseSchema(BulkIntakeSchema);\n\nexport type BulkIntake = z.infer<typeof BulkIntakeSchema>;\nexport type GetBulkIntakesSuccessResponse = z.infer<typeof GetBulkIntakesSuccessResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Trial Blends\n// ---------------------------------------------------------------------------\n\nexport const TrialBlendSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n status: z.string().optional(),\n createdDate: z.number().optional(),\n createdDateAsText: z.string().optional(),\n targetVolume: MeasurementSchema.optional(),\n actualVolume: MeasurementSchema.optional(),\n components: z\n .array(\n z.object({\n productId: z.number().optional(),\n productName: z.string().optional(),\n percentage: z.number().optional(),\n volume: MeasurementSchema.optional(),\n })\n )\n .optional(),\n});\n\nexport const GetTrialBlendsSuccessResponseSchema = PaginatedResponseSchema(TrialBlendSchema);\n\nexport type TrialBlend = z.infer<typeof TrialBlendSchema>;\nexport type GetTrialBlendsSuccessResponse = z.infer<typeof GetTrialBlendsSuccessResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Work Orders (v7)\n// ---------------------------------------------------------------------------\n\nexport const WorkOrderV7Schema = z.object({\n id: z.number().optional(),\n code: z.string().optional(),\n name: z.string().optional(),\n status: z.string().optional(),\n scheduledDate: z.number().optional(),\n scheduledDateAsText: z.string().optional(),\n assignedTo: z.string().optional(),\n summary: z.string().optional(),\n});\n\nexport const GetWorkOrdersV7ResponseSchema = PaginatedResponseSchema(WorkOrderV7Schema);\n\nexport type WorkOrderV7 = z.infer<typeof WorkOrderV7Schema>;\nexport type GetWorkOrdersV7Response = z.infer<typeof GetWorkOrdersV7ResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Tirage\n// ---------------------------------------------------------------------------\n\nexport const TirageSourceWineDetailsSchema = z.object({\n productId: z.number().optional(),\n productName: z.string().optional(),\n volume: MeasurementSchema.optional(),\n vintage: z.string().optional(),\n});\n\nexport const TiragePackageDetailsSchema = z.object({\n packageType: z.string().optional(),\n quantity: z.number().optional(),\n volume: MeasurementSchema.optional(),\n});\n\nexport const TirageSchema = z.object({\n id: z.number().optional(),\n operationId: z.number().optional(),\n status: z.string().optional(),\n sourceWine: TirageSourceWineDetailsSchema.optional(),\n package: TiragePackageDetailsSchema.optional(),\n jobNumber: z.string().optional(),\n createdDate: z.number().optional(),\n createdDateAsText: z.string().optional(),\n});\n\nexport const TirageSuccessResponseSchema = z.object({\n data: TirageSchema.optional(),\n});\n\nexport type TirageSourceWineDetails = z.infer<typeof TirageSourceWineDetailsSchema>;\nexport type TiragePackageDetails = z.infer<typeof TiragePackageDetailsSchema>;\nexport type Tirage = z.infer<typeof TirageSchema>;\nexport type TirageSuccessResponse = z.infer<typeof TirageSuccessResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Barrels Movements\n// ---------------------------------------------------------------------------\n\nexport const BarrelsMovementSchema = z.object({\n id: z.number().optional(),\n movementDate: z.number().optional(),\n movementDateAsText: z.string().optional(),\n fromLocation: z.string().optional(),\n toLocation: z.string().optional(),\n barrels: z.array(z.string()).optional(),\n status: z.string().optional(),\n});\n\nexport const CreateBarrelsMovementRequestSchema = z.object({\n movementDate: z.number().optional(),\n fromLocation: z.string().optional(),\n toLocation: z.string().optional(),\n barrels: z.array(z.string()).optional(),\n});\n\nexport type BarrelsMovement = z.infer<typeof BarrelsMovementSchema>;\nexport type CreateBarrelsMovementRequest = z.infer<typeof CreateBarrelsMovementRequestSchema>;\n\n// ---------------------------------------------------------------------------\n// Bookings (v7)\n// ---------------------------------------------------------------------------\n\nexport const BookingStateSchema = z.enum(['Scheduled', 'Underway', 'Completed', 'Confirmed']);\n\nexport const BookingSchema = z.object({\n id: z.number().optional(),\n code: z.string().optional(),\n bookingDate: z.number().optional(),\n bookingDateAsText: z.string().optional(),\n bookingState: BookingStateSchema.optional(),\n bookingType: z.string().optional(),\n startTime: z.number().optional(),\n startTimeAsText: z.string().optional(),\n endTime: z.number().optional(),\n endTimeAsText: z.string().optional(),\n winery: WinerySchema.optional(),\n bulkBooking: z.boolean().optional(),\n lastBooking: z.boolean().optional(),\n});\n\nexport const CreateBookingSuccessResponseSchema = z.object({\n data: BookingSchema.optional(),\n});\n\nexport const BookingDeactivationResponseSchema = z.object({\n status: z.string().optional(),\n message: z.string().optional(),\n});\n\nexport type BookingState = z.infer<typeof BookingStateSchema>;\nexport type Booking = z.infer<typeof BookingSchema>;\nexport type CreateBookingSuccessResponse = z.infer<typeof CreateBookingSuccessResponseSchema>;\nexport type BookingDeactivationResponse = z.infer<typeof BookingDeactivationResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Purchase Orders\n// ---------------------------------------------------------------------------\n\nconst PurchaseOrderStateEnum = z.enum(['NEW', 'APPROVED']);\nconst FulfillmentEnum = z.enum(['NOT_FULFILLED', 'PART_FULFILLED', 'FULFILLED', 'OVER_FULFILLED']);\nconst TaxPolicyEnum = z.enum(['TAX_INCLUSIVE', 'TAX_EXCLUSIVE', 'NO_TAX']);\nconst PurchaseOrderLineTypeEnum = z.enum(['GENERAL', 'ADHOC', 'WINE_BATCH', 'STOCK']);\n\nexport const PurchaseOrderLineSchema = z.object({\n id: z.number(),\n type: PurchaseOrderLineTypeEnum,\n lineNumber: z.string().nullable().optional(),\n itemCode: z.string().nullable().optional(),\n vendorCode: z.string().nullable().optional(),\n description: z.string().nullable().optional(),\n itemName: z.string().optional(),\n unitPrice: z.number().optional(),\n totalPrice: z.number().optional(),\n taxable: z.boolean().optional(),\n quantityOrdered: MeasurementSchema.optional(),\n quantityFulfilled: MeasurementSchema.optional(),\n});\n\nexport const PurchaseOrderSchema = z.object({\n id: z.number(),\n name: z.string(),\n state: PurchaseOrderStateEnum.optional(),\n fulfillment: FulfillmentEnum.optional(),\n taxPolicy: TaxPolicyEnum.optional(),\n freightCost: z.number().nullable().optional(),\n inactive: z.boolean().optional(),\n vendor: ExtIdentifiableEntitySchema.optional(),\n vendorReference: z.string().nullable().optional(),\n deliverBy: z.number().nullable().optional(),\n notes: z.string().nullable().optional(),\n winery: z\n .object({\n id: z.number().optional(),\n name: z.string().optional(),\n businessUnit: z.string().nullable().optional(),\n })\n .optional(),\n lines: PurchaseOrderLineSchema.array().optional(),\n});\n\nexport const PurchaseOrderResponseSchema = z.object({\n data: PurchaseOrderSchema,\n});\n\nexport type PurchaseOrderLine = z.infer<typeof PurchaseOrderLineSchema>;\nexport type PurchaseOrder = z.infer<typeof PurchaseOrderSchema>;\nexport type PurchaseOrderResponse = z.infer<typeof PurchaseOrderResponseSchema>;\n","import { VintraceClientConfig, DEFAULT_OPTIONS, VintraceClientOptions } from './config';\nimport { vintraceFetch, RequestOptions } from '../http/fetch';\nimport { paginate, PaginatedResponse } from '../http/pagination';\nimport { VintraceResult } from '../types/result';\nimport { VintraceError, VintraceAggregateError } from './errors';\nimport { batchFetch } from './utils';\nimport type {\n WorkOrderSearchResponse,\n WorkOrderDetail,\n AssignWorkResponse,\n SubmitWorkOrderStepsResponse,\n SalesOrder,\n SalesOrderResponse,\n SalesOrderUpdateResponse,\n Refund,\n RefundResponse,\n RefundUpdateResponse,\n Party,\n PartyResponse,\n PartyUpdateResponse,\n ProductListResponse,\n ProductResponse,\n ProductUpdateResponse,\n ProductUpdateData,\n Product,\n ProductAnalysisResponse,\n ProductAnalysisParams,\n ProductCompositionResponse,\n GetBlocksSuccessResponse,\n InventoryResponse,\n InventoryListParams,\n TransactionSearchResponse,\n TransactionSearchParams,\n IntakeOperationSearchResponse,\n IntakeOperationSearchParams,\n SampleOperationSearchResponse,\n SampleOperationSearchParams,\n SearchListResponse,\n SearchListParams,\n MrpStockHistoryParams,\n MrpStockNotesParams,\n BulkWineDetails,\n GetBulkWineDetailsReportResponse,\n ProductJobResponse,\n GetBusinessUnitTransactionsResponse,\n CreateFruitIntakeSuccessResponse,\n UpdateFruitIntakePricing,\n UpdateFruitIntakePricingResponse,\n UpdateMetrics,\n UpdateMetricsResponse,\n TirageSuccessResponse,\n BarrelsMovement,\n BlockData,\n Block,\n BlockResponse,\n TransactionDetails,\n PurchaseOrder,\n PurchaseOrderResponse,\n} from '../validation/schemas';\nimport {\n WorkOrderSearchResponseSchema,\n WorkOrderDetailSchema,\n AssignWorkResponseSchema,\n AssignWorkDataSchema,\n SubmitWorkOrderStepsResponseSchema,\n SubmitJobRequestSchema,\n SalesOrderSchema,\n SalesOrderWriteSchema,\n SalesOrderResponseSchema,\n SalesOrderUpdateResponseSchema,\n RefundSchema,\n RefundWriteSchema,\n RefundResponseSchema,\n RefundUpdateResponseSchema,\n PartySchema,\n PartyWriteSchema,\n PartyResponseSchema,\n PartyUpdateResponseSchema,\n ProductListResponseSchema,\n ProductResponseSchema,\n ProductUpdateResponseSchema,\n ProductUpdateDataSchema,\n ProductSchema,\n ProductAnalysisResponseSchema,\n ProductCompositionResponseSchema,\n GetBlocksSuccessResponseSchema,\n InventoryResponseSchema,\n TransactionSearchResponseSchema,\n IntakeOperationSearchResponseSchema,\n SampleOperationSearchResponseSchema,\n SearchListResponseSchema,\n GetBulkWineDetailsReportResponseSchema,\n ProductJobResponseSchema,\n GetBusinessUnitTransactionsResponseSchema,\n CreateFruitIntakeSuccessResponseSchema,\n UpdateFruitIntakePricingSchema,\n UpdateFruitIntakePricingResponseSchema,\n UpdateMetricsSchema,\n UpdateMetricsResponseSchema,\n TirageSuccessResponseSchema,\n CreateBarrelsMovementRequestSchema,\n FruitIntakeRequestSchema,\n PurchaseOrderResponseSchema,\n BlockResponseSchema,\n} from '../validation/schemas';\n\nexport interface WorkOrderListParams {\n /**\n * Filter work orders starting from this date (ISO yyyy-MM-dd).\n * Example: `2024-01-01`\n */\n max?: string;\n first?: string;\n startsWith?: string;\n assignedTo?: 'AVAILABLE_TO_ME' | 'ANYONE' | 'MINE_ONLY' | 'UNASSIGNED';\n workOrderState?: 'ANY' | 'IN_PROGRESS' | 'NOT_STARTED' | 'SUBMITTED' | 'INCOMPLETE';\n fromDate?: string;\n toDate?: string;\n countOnly?: boolean;\n wineryId?: number;\n}\n\nexport interface SalesOrderListParams {\n /**\n * startDate and endDate filter the sales orders by date (ISO yyyy-MM-dd).\n * Example: `2024-01-01`\n */\n max?: string;\n first?: string;\n startsWith?: string;\n status?: string;\n customerName?: string;\n startDate?: string;\n endDate?: string;\n invStartDate?: string;\n invEndDate?: string;\n externalTransactionId?: string;\n}\n\nexport interface RefundListParams {\n /**\n * startDate and endDate filter refunds by date (ISO yyyy-MM-dd).\n * Example: `2024-01-01`\n */\n max?: string;\n first?: string;\n startsWith?: string;\n status?: string;\n customerName?: string;\n startDate?: string;\n endDate?: string;\n salesOrderName?: string;\n}\n\nexport interface PartyListParams {\n max?: string;\n first?: string;\n startsWith?: string;\n category?: 'All' | 'Individuals' | 'Organisations';\n}\n\nexport interface ProductListParams {\n max?: string;\n first?: string;\n startsWith?: string;\n}\n\nexport interface VesselDetailsReportParams {\n limit?: number;\n offset?: number;\n /**\n * asAtDate is the report date expressed as epoch milliseconds.\n * Example: `1704067200000` (represents 2024-01-01T00:00:00.000Z)\n */\n asAtDate?: number;\n businessUnit?: string;\n batch?: string;\n vessel?: string;\n owner?: string;\n extraFields?: string;\n vesselId?: number;\n productId?: number;\n wineryId?: number;\n wineryName?: string;\n vesselType?: 'TANK' | 'BIN' | 'BARREL' | 'BARREL_GROUP' | 'BIN_GROUP' | 'PRESS' | 'TANKER';\n}\n\nexport interface BlocksListParams {\n include?: string;\n vintage?: string;\n VintraceEntityIds?: string;\n limit?: number;\n offset?: number;\n}\n\nexport class VintraceClient {\n /**\n * The base URL of the Vintrace API.\n */\n public readonly baseUrl: string;\n /**\n * The organization identifier.\n */\n public readonly organization: string;\n /**\n * The API token for authentication.\n */\n public readonly token: string;\n /**\n * Client options with default values applied.\n */\n public readonly options: Required<VintraceClientOptions>;\n\n /**\n * v6 API endpoints.\n */\n public readonly v6: VintraceV6Api;\n /**\n * v7 API endpoints.\n */\n public readonly v7: VintraceV7Api;\n\n /**\n * Creates a new VintraceClient instance.\n *\n * @param config - The client configuration containing baseUrl, organization, and token.\n */\n constructor(config: VintraceClientConfig) {\n this.baseUrl = config.baseUrl;\n this.organization = config.organization;\n this.token = config.token;\n this.options = { ...DEFAULT_OPTIONS, ...config.options };\n\n this.v6 = new VintraceV6Api(this);\n this.v7 = new VintraceV7Api(this);\n }\n\n /**\n * Makes a request to the Vintrace API.\n *\n * @param endpoint - The API endpoint path (e.g., 'v6/workorders/list')\n * @param method - The HTTP method (GET, POST, PUT, PATCH, DELETE)\n * @param options - Request options including timeout, maxRetries, and validation settings\n * @param body - Optional request body for POST, PUT, PATCH requests\n * @returns A promise that resolves to a VintraceResult tuple [data, error]\n */\n public request<T>(\n endpoint: string,\n method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE',\n options?: RequestOptions,\n body?: unknown\n ): Promise<VintraceResult<T>> {\n return vintraceFetch<T>(\n this.baseUrl,\n this.organization,\n this.token,\n endpoint,\n method,\n {\n timeout: options?.timeout ?? this.options.timeout,\n maxRetries: options?.maxRetries ?? this.options.maxRetries,\n validateRequest: options?.validateRequest ?? this.options.validateRequests,\n validateResponse: options?.validateResponse ?? this.options.validateResponses,\n responseSchema: options?.responseSchema,\n requestSchema: options?.requestSchema,\n },\n body\n );\n }\n}\n\nclass VintraceV6Api {\n private _workOrders?: WorkOrdersClient;\n private _salesOrders?: SalesOrdersClient;\n private _refunds?: RefundsClient;\n private _parties?: PartiesClient;\n private _products?: ProductsClient;\n private _transactions?: TransactionsClient;\n private _intakeOperations?: IntakeOperationsClient;\n private _sampleOperations?: SampleOperationsClient;\n private _blockAssessments?: BlockAssessmentsClient;\n private _mrpStock?: MrpStockClient;\n private _inventory?: InventoryClient;\n private _search?: SearchClient;\n private _productAnalysis?: ProductAnalysisClient;\n private _productComposition?: ProductCompositionClient;\n private _productJobs?: ProductJobsClient;\n\n constructor(private client: VintraceClient) {}\n\n get workOrders(): WorkOrdersClient {\n return (this._workOrders ??= new WorkOrdersClient(this.client));\n }\n\n get salesOrders(): SalesOrdersClient {\n return (this._salesOrders ??= new SalesOrdersClient(this.client));\n }\n\n get refunds(): RefundsClient {\n return (this._refunds ??= new RefundsClient(this.client));\n }\n\n get parties(): PartiesClient {\n return (this._parties ??= new PartiesClient(this.client));\n }\n\n get products(): ProductsClient {\n return (this._products ??= new ProductsClient(this.client));\n }\n\n get transactions(): TransactionsClient {\n return (this._transactions ??= new TransactionsClient(this.client));\n }\n\n get intakeOperations(): IntakeOperationsClient {\n return (this._intakeOperations ??= new IntakeOperationsClient(this.client));\n }\n\n get sampleOperations(): SampleOperationsClient {\n return (this._sampleOperations ??= new SampleOperationsClient(this.client));\n }\n\n get blockAssessments(): BlockAssessmentsClient {\n return (this._blockAssessments ??= new BlockAssessmentsClient(this.client));\n }\n\n get mrpStock(): MrpStockClient {\n return (this._mrpStock ??= new MrpStockClient(this.client));\n }\n\n get inventory(): InventoryClient {\n return (this._inventory ??= new InventoryClient(this.client));\n }\n\n get search(): SearchClient {\n return (this._search ??= new SearchClient(this.client));\n }\n\n get productAnalysis(): ProductAnalysisClient {\n return (this._productAnalysis ??= new ProductAnalysisClient(this.client));\n }\n\n get productComposition(): ProductCompositionClient {\n return (this._productComposition ??= new ProductCompositionClient(this.client));\n }\n\n get productJobs(): ProductJobsClient {\n return (this._productJobs ??= new ProductJobsClient(this.client));\n }\n}\n\nclass VintraceV7Api {\n private _costs?: CostsClient;\n private _blocks?: BlocksClient;\n private _bookings?: BookingsClient;\n private _fruitIntakes?: FruitIntakesClient;\n private _tirage?: TirageClient;\n private _barrelsMovements?: BarrelsMovementsClient;\n private _vesselDetailsReport?: VesselDetailsReportClient;\n private _wineBatches?: WineBatchesClient;\n private _documents?: DocumentsClient;\n private _stock?: StockClient;\n private _vessels?: VesselsClient;\n private _purchaseOrders?: PurchaseOrdersClient;\n\n constructor(private client: VintraceClient) {}\n\n get costs(): CostsClient {\n return (this._costs ??= new CostsClient(this.client));\n }\n\n get blocks(): BlocksClient {\n return (this._blocks ??= new BlocksClient(this.client));\n }\n\n get bookings(): BookingsClient {\n return (this._bookings ??= new BookingsClient(this.client));\n }\n\n get fruitIntakes(): FruitIntakesClient {\n return (this._fruitIntakes ??= new FruitIntakesClient(this.client));\n }\n\n get tirage(): TirageClient {\n return (this._tirage ??= new TirageClient(this.client));\n }\n\n get barrelsMovements(): BarrelsMovementsClient {\n return (this._barrelsMovements ??= new BarrelsMovementsClient(this.client));\n }\n\n get vesselDetailsReport(): VesselDetailsReportClient {\n return (this._vesselDetailsReport ??= new VesselDetailsReportClient(this.client));\n }\n\n get wineBatches(): WineBatchesClient {\n return (this._wineBatches ??= new WineBatchesClient(this.client));\n }\n\n get documents(): DocumentsClient {\n return (this._documents ??= new DocumentsClient(this.client));\n }\n\n get stock(): StockClient {\n return (this._stock ??= new StockClient(this.client));\n }\n\n get vessels(): VesselsClient {\n return (this._vessels ??= new VesselsClient(this.client));\n }\n\n get purchaseOrders(): PurchaseOrdersClient {\n return (this._purchaseOrders ??= new PurchaseOrdersClient(this.client));\n }\n}\n\nclass WorkOrdersClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * List available work orders.\n *\n * By default returns a list of all work orders that are in \"Ready\",\n * \"In progress\", or \"Submitted\" states and are assigned to me or unassigned\n * with a date range from 7 days ago to 3 days from now.\n */\n async getAll(params?: WorkOrderListParams): Promise<VintraceResult<WorkOrderDetail[]>> {\n /**\n * List available work orders.\n *\n * Maps to GET /workorders/list (v6). By default this returns work orders\n * in Ready, In progress or Submitted states and assigned to the caller or\n * unassigned. Use `fromDate` / `toDate` to filter by scheduled date using\n * YYYY-MM-DD format (example: `2024-01-01`). `assignedTo` accepts:\n * AVAILABLE_TO_ME | ANYONE | MINE_ONLY | UNASSIGNED. `workOrderState` accepts\n * ANY | IN_PROGRESS | NOT_STARTED | SUBMITTED | INCOMPLETE.\n */\n const limit = params?.max ? parseInt(params.max, 10) : 100;\n const firstResponse = await this.client.request<WorkOrderSearchResponse>(\n 'v6/workorders/list',\n 'GET',\n { responseSchema: WorkOrderSearchResponseSchema },\n { ...params, max: String(limit), first: '0' }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.workOrders?.length ?? 0;\n if (totalCount <= limit) {\n return [response.workOrders ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: WorkOrderDetail[] = [...(response.workOrders ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<WorkOrderSearchResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<WorkOrderSearchResponse>(\n 'v6/workorders/list',\n 'GET',\n { responseSchema: WorkOrderSearchResponseSchema },\n { ...params, max: String(limit), first: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.workOrders) {\n allResults.push(...pageData.workOrders);\n }\n }\n }\n\n return [allResults, null];\n }\n\n get(id: string): Promise<VintraceResult<WorkOrderDetail>> {\n /**\n * Get work order details by id or code.\n *\n * Returns a single work order with a given id or code.\n */\n return this.client.request<WorkOrderDetail>(`v6/workorders/${id}`, 'GET', {\n responseSchema: WorkOrderDetailSchema,\n });\n }\n\n getByCode(code: string): Promise<VintraceResult<WorkOrderDetail>> {\n /**\n * Get work order details by code.\n *\n * Returns a work order by its TWL code (e.g. `TWL2827`).\n */\n return this.client.request<WorkOrderDetail>(\n 'v6/workorders',\n 'GET',\n { responseSchema: WorkOrderDetailSchema },\n { code }\n );\n }\n\n getJob(jobId: string): Promise<VintraceResult<unknown>> {\n /**\n * Get job details by id.\n *\n * Retrieve details for a single job by id.\n */\n return this.client.request<unknown>(`v6/workorders/jobs/${jobId}`, 'GET');\n }\n\n assign(workOrderId: number): Promise<VintraceResult<AssignWorkResponse>> {\n /**\n * Assign a work order.\n *\n * Assign a work order to the calling operator.\n */\n return this.client.request<AssignWorkResponse>(\n 'v6/workorders/assign',\n 'POST',\n { responseSchema: AssignWorkResponseSchema, requestSchema: AssignWorkDataSchema },\n { workOrderId }\n );\n }\n\n submit(data: {\n jobId: number;\n submitType?: string;\n fields?: { fieldId: string; value?: string }[];\n }): Promise<VintraceResult<SubmitWorkOrderStepsResponse>> {\n /**\n * Submit job details.\n *\n * Submit job step results. `data` should include `jobId` and optional\n * `submitType` (e.g. 'draft') and `fields` array with { fieldId, value }.\n */\n return this.client.request<SubmitWorkOrderStepsResponse>(\n 'v6/workorders/submit',\n 'POST',\n { responseSchema: SubmitWorkOrderStepsResponseSchema, requestSchema: SubmitJobRequestSchema },\n data\n );\n }\n\n getMany(ids: string[]): Promise<VintraceResult<WorkOrderDetail[]>> {\n /**\n * Get multiple work orders by ids.\n *\n * Batch fetch multiple work orders by their IDs. Returns VintraceAggregateError if any request fails.\n */\n return batchFetch(ids, (id) => this.get(id));\n }\n}\n\nclass SalesOrdersClient {\n constructor(private client: VintraceClient) {}\n /**\n * List available sales orders.\n *\n * Returns a list of the first 100 sales orders.\n */\n async getAll(params?: SalesOrderListParams): Promise<VintraceResult<SalesOrder[]>> {\n const limit = params?.max ? parseInt(params.max, 10) : 100;\n const firstResponse = await this.client.request<SalesOrderResponse>(\n 'v6/sales-order/list',\n 'GET',\n { responseSchema: SalesOrderResponseSchema },\n { ...params, max: String(limit), first: '0' }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.salesOrders?.length ?? 0;\n if (totalCount <= limit) {\n return [response.salesOrders ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: SalesOrder[] = [...(response.salesOrders ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<SalesOrderResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<SalesOrderResponse>(\n 'v6/sales-order/list',\n 'GET',\n { responseSchema: SalesOrderResponseSchema },\n { ...params, max: String(limit), first: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.salesOrders) {\n allResults.push(...pageData.salesOrders);\n }\n }\n }\n\n return [allResults, null];\n }\n\n get(id: string): Promise<VintraceResult<SalesOrder>> {\n /**\n * Get sales order details by id.\n *\n * Returns a single sales order with a given id.\n */\n return this.client.request<SalesOrder>(`v6/sales-order/${id}`, 'GET', {\n responseSchema: SalesOrderSchema,\n });\n }\n\n getByCode(code: string): Promise<VintraceResult<SalesOrder>> {\n /**\n * Get sales order details by code.\n *\n * Returns a single sales order with a given code (e.g. 'VSO20').\n */\n return this.client.request<SalesOrder>(\n 'v6/sales-order',\n 'GET',\n { responseSchema: SalesOrderSchema },\n { code }\n );\n }\n\n create(data: Partial<SalesOrder>): Promise<VintraceResult<SalesOrderUpdateResponse>> {\n /**\n * Create or update a sales order.\n *\n * If updating, include the `id` field in `data`. Note: for discounts, use\n * `discountPct` when accounting integration (Xero) is on; otherwise use\n * `adjustment` for a dollar value.\n */\n return this.client.request<SalesOrderUpdateResponse>(\n 'v6/sales-order',\n 'POST',\n { responseSchema: SalesOrderUpdateResponseSchema, requestSchema: SalesOrderWriteSchema },\n data\n );\n }\n\n update(id: string, data: Partial<SalesOrder>): Promise<VintraceResult<SalesOrderUpdateResponse>> {\n /**\n * Update a sales order by id.\n *\n * Replace (update) a sales order by id. Provide the SalesOrder fields to\n * update in `data`.\n */\n return this.client.request<SalesOrderUpdateResponse>(\n `v6/sales-order/${id}`,\n 'PUT',\n { responseSchema: SalesOrderUpdateResponseSchema, requestSchema: SalesOrderWriteSchema },\n data\n );\n }\n\n getMany(ids: string[]): Promise<VintraceResult<SalesOrder[]>> {\n /**\n * Get multiple sales orders by ids.\n *\n * Batch fetch multiple sales orders by their IDs. Returns VintraceAggregateError if any request fails.\n */\n return batchFetch(ids, (id) => this.get(id));\n }\n}\n\nclass RefundsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * List available refunds.\n *\n * Returns a list of the first 100 refunds.\n */\n async getAll(params?: RefundListParams): Promise<VintraceResult<Refund[]>> {\n /**\n * List available refunds.\n *\n * Maps to GET /refund/list (v6). Filter with `startDate`/`endDate` in\n * YYYY-MM-DD format (example: `2024-01-01`).\n */\n const limit = params?.max ? parseInt(params.max, 10) : 100;\n const firstResponse = await this.client.request<RefundResponse>(\n 'v6/refund/list',\n 'GET',\n { responseSchema: RefundResponseSchema },\n { ...params, max: String(limit), first: '0' }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.refunds?.length ?? 0;\n if (totalCount <= limit) {\n return [response.refunds ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: Refund[] = [...(response.refunds ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<RefundResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<RefundResponse>(\n 'v6/refund/list',\n 'GET',\n { responseSchema: RefundResponseSchema },\n { ...params, max: String(limit), first: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.refunds) {\n allResults.push(...pageData.refunds);\n }\n }\n }\n\n return [allResults, null];\n }\n\n get(id: string): Promise<VintraceResult<Refund>> {\n /**\n * Get refund details by id.\n *\n * Returns a single refund with a given id.\n */\n return this.client.request<Refund>(`v6/refund/${id}`, 'GET', { responseSchema: RefundSchema });\n }\n\n getByCode(code: string): Promise<VintraceResult<Refund>> {\n /**\n * Get refund details by code.\n *\n * Returns a single refund with a given code.\n */\n return this.client.request<Refund>(\n 'v6/refund',\n 'GET',\n { responseSchema: RefundSchema },\n { code }\n );\n }\n\n create(data: Partial<Refund>): Promise<VintraceResult<RefundUpdateResponse>> {\n /**\n * Create or update a refund.\n *\n * To update, include `id` in `data`.\n */\n return this.client.request<RefundUpdateResponse>(\n 'v6/refund',\n 'POST',\n { responseSchema: RefundUpdateResponseSchema, requestSchema: RefundWriteSchema },\n data\n );\n }\n\n update(id: string, data: Partial<Refund>): Promise<VintraceResult<RefundUpdateResponse>> {\n /**\n * Update a refund by id.\n *\n * Replace (update) a refund by id. Provide the Refund fields to\n * update in `data`.\n */\n return this.client.request<RefundUpdateResponse>(\n `v6/refund/${id}`,\n 'PUT',\n { responseSchema: RefundUpdateResponseSchema, requestSchema: RefundWriteSchema },\n data\n );\n }\n\n getMany(ids: string[]): Promise<VintraceResult<Refund[]>> {\n /**\n * Get multiple refunds by ids.\n *\n * Batch fetch multiple refunds by their IDs. Returns VintraceAggregateError if any request fails.\n */\n return batchFetch(ids, (id) => this.get(id));\n }\n}\n\nclass PartiesClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * List parties.\n *\n * Returns a list of the first 100 parties.\n */\n async getAll(params?: PartyListParams): Promise<VintraceResult<Party[]>> {\n /**\n * List parties.\n *\n * Maps to GET /party/list (v6). Use `startsWith` to filter by name start\n * and `category` with values All | Individuals | Organisations.\n */\n const limit = params?.max ? parseInt(params.max, 10) : 100;\n const firstResponse = await this.client.request<PartyResponse>(\n 'v6/party/list',\n 'GET',\n { responseSchema: PartyResponseSchema },\n { ...params, max: String(limit), first: '0' }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.parties?.length ?? 0;\n if (totalCount <= limit) {\n return [response.parties ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: Party[] = [...(response.parties ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<PartyResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<PartyResponse>(\n 'v6/party/list',\n 'GET',\n { responseSchema: PartyResponseSchema },\n { ...params, max: String(limit), first: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.parties) {\n allResults.push(...pageData.parties);\n }\n }\n }\n\n return [allResults, null];\n }\n\n get(id: string): Promise<VintraceResult<Party>> {\n /**\n * Get party details by id.\n *\n * Returns a single party with a given id.\n */\n return this.client.request<Party>(`v6/party/${id}`, 'GET', { responseSchema: PartySchema });\n }\n\n getByName(name: string): Promise<VintraceResult<Party>> {\n /**\n * Get party details by name.\n *\n * Returns a party by its name.\n */\n return this.client.request<Party>('v6/party', 'GET', { responseSchema: PartySchema }, { name });\n }\n\n create(data: Partial<Party>): Promise<VintraceResult<PartyUpdateResponse>> {\n /**\n * Create or update a party.\n *\n * Include `id` in `data` to update an existing party; otherwise a new party will be created.\n */\n return this.client.request<PartyUpdateResponse>(\n 'v6/party',\n 'POST',\n { responseSchema: PartyUpdateResponseSchema, requestSchema: PartyWriteSchema },\n data\n );\n }\n\n getMany(ids: string[]): Promise<VintraceResult<Party[]>> {\n /**\n * Get multiple parties by ids.\n *\n * Batch fetch multiple parties by their IDs. Returns VintraceAggregateError if any request fails.\n */\n return batchFetch(ids, (id) => this.get(id));\n }\n}\n\nclass ProductsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * List available products.\n *\n * Returns a list of all active products.\n */\n async getAll(params?: ProductListParams): Promise<VintraceResult<Product[]>> {\n const limit = params?.max ? parseInt(params.max, 10) : 100;\n const firstResponse = await this.client.request<ProductListResponse>(\n 'v6/products/list',\n 'GET',\n { responseSchema: ProductListResponseSchema },\n { ...params, max: String(limit), first: '0' }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.products?.length ?? 0;\n if (totalCount <= limit) {\n return [response.products ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: Product[] = [...(response.products ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<ProductListResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<ProductListResponse>(\n 'v6/products/list',\n 'GET',\n { responseSchema: ProductListResponseSchema },\n { ...params, max: String(limit), first: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.products) {\n allResults.push(...pageData.products);\n }\n }\n }\n\n return [allResults, null];\n }\n\n get(id: string): Promise<VintraceResult<ProductResponse>> {\n /**\n * Search for a product by id.\n *\n * Searches for a product using an id and returns the product details and vessel information.\n */\n return this.client.request<ProductResponse>(`v6/products/${id}`, 'GET', {\n responseSchema: ProductResponseSchema,\n });\n }\n\n async getMany(ids: string[]): Promise<VintraceResult<Product[]>> {\n /**\n * Get multiple products by ids.\n *\n * Batch fetch multiple products by their IDs. Returns VintraceAggregateError if any request fails.\n */\n const results = await Promise.allSettled(ids.map((id) => this.get(id)));\n const errors: VintraceError[] = [];\n const data: Product[] = [];\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n const [envelope, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (envelope?.product) {\n data.push(envelope.product);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [data, null];\n }\n\n create(data: unknown): Promise<VintraceResult<ProductResponse>> {\n /**\n * Create a new product.\n *\n * Creates a new product with the provided data.\n */\n return this.client.request<ProductResponse>(\n 'v6/products',\n 'POST',\n { responseSchema: ProductResponseSchema, requestSchema: ProductSchema },\n data\n );\n }\n\n update(id: string, data: unknown): Promise<VintraceResult<ProductUpdateResponse>> {\n /**\n * Update a product by id.\n *\n * Replace (update) a product by id with the provided data.\n */\n return this.client.request<ProductUpdateResponse>(\n `v6/products/${id}`,\n 'PUT',\n { responseSchema: ProductUpdateResponseSchema, requestSchema: ProductSchema },\n data\n );\n }\n\n updateFields(data: ProductUpdateData): Promise<VintraceResult<ProductUpdateResponse>> {\n /**\n * Update specific fields on a product.\n *\n * Partially update product fields using the provided data.\n */\n return this.client.request<ProductUpdateResponse>(\n 'v6/product-update',\n 'POST',\n { responseSchema: ProductUpdateResponseSchema, requestSchema: ProductUpdateDataSchema },\n data\n );\n }\n}\n\nclass BlocksClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Get all blocks in the system.\n *\n * Get all the blocks that matches the provided query params in the system.\n * By default, the block data returned in this endpoint only includes:\n * id, code, name, description, grower, vineyard, region, subRegion, varietal,\n * rowNumbers, estate, intendedUse, grading, externalId, inactive\n *\n * API consumer can use the include and vintage query params to request including more information in the response.\n */\n async getAll(params?: BlocksListParams): Promise<VintraceResult<BlockData[]>> {\n const limit = params?.limit ?? 100;\n const queryParams: Record<string, string> = { limit: String(limit), offset: '0' };\n if (params?.include) queryParams.include = params.include;\n if (params?.vintage) queryParams.vintage = params.vintage;\n if (params?.VintraceEntityIds) queryParams.VintraceEntityIds = params.VintraceEntityIds;\n if (params?.offset) queryParams.offset = String(params.offset);\n\n const firstResponse = await this.client.request<GetBlocksSuccessResponse>(\n 'v7/harvest/blocks',\n 'GET',\n { responseSchema: GetBlocksSuccessResponseSchema },\n queryParams\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResults ?? 0;\n if (totalCount <= limit) {\n return [response.results ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: BlockData[] = [...(response.results ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<GetBlocksSuccessResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const pageOffset = (i + j) * limit;\n const pageParams: Record<string, string> = { ...queryParams, offset: String(pageOffset) };\n batchPromises.push(\n this.client.request<GetBlocksSuccessResponse>(\n 'v7/harvest/blocks',\n 'GET',\n { responseSchema: GetBlocksSuccessResponseSchema },\n pageParams\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.results) {\n allResults.push(...pageData.results);\n }\n }\n }\n\n return [allResults, null];\n }\n\n /**\n * Upsert block data into system.\n *\n * Create or update block data in the system. Provide a Block object in `data`.\n * Example fields: `extId`, `name`, `estate`, `vineyard`, `variety`, `area`.\n */\n async post(data: unknown): Promise<VintraceResult<Block>> {\n const [response, error] = await this.client.request<BlockResponse>(\n 'v7/harvest/blocks',\n 'POST',\n { responseSchema: BlockResponseSchema },\n data\n );\n if (error) return [null, error];\n if (!response?.data) return [null, null];\n return [response.data, null];\n }\n\n patch(id: string, data: unknown) {\n /**\n * Partially update some fields in the block record.\n *\n * Provide functionality to update only some fields in the bulk intake record.\n * Note, not all fields will support this PATCH operation.\n */\n return this.client.request<unknown>(`v7/harvest/blocks/${id}`, 'PATCH', {}, data);\n }\n\n /**\n * Upsert assessment data for a block.\n *\n * Create or update assessment data for a block by its blockId.\n */\n createAssessment(blockId: string, data: unknown): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(\n `v7/harvest/blocks/${blockId}/assessments`,\n 'POST',\n {},\n data\n );\n }\n}\n\nclass BookingsClient {\n constructor(private client: VintraceClient) {}\n\n post(data: unknown) {\n /**\n * Upsert a booking into vintrace.\n *\n * Create or update a booking record.\n */\n return this.client.request<unknown>('v7/operation/bookings', 'POST', {}, data);\n }\n\n deactivate(id: string) {\n /**\n * Deactivate this booking record.\n *\n * Deactivates a booking by its ID.\n */\n return this.client.request<unknown>(`v7/operation/bookings/${id}/deactivation`, 'POST');\n }\n}\n\nclass VesselDetailsReportClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Get vessel details report.\n *\n * Returns a vessel details report based on the provided parameters.\n */\n async get(\n params?: VesselDetailsReportParams\n ): Promise<VintraceResult<GetBulkWineDetailsReportResponse>> {\n const baseOffset = params?.offset ?? 0;\n const limit = params?.limit ?? 100;\n const firstResponse = await this.client.request<GetBulkWineDetailsReportResponse>(\n 'v7/report/vessel-details-report',\n 'GET',\n { responseSchema: GetBulkWineDetailsReportResponseSchema },\n { ...params, limit: String(limit), offset: String(baseOffset) }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [null, null];\n }\n\n const totalCount = response.totalResults ?? response.results?.length ?? 0;\n if (totalCount <= limit) {\n return [response, null];\n }\n const allResults = [...(response.results ?? [])];\n\n const pageFetcher = async (\n relativeOffset: number,\n pageLimit: number\n ): Promise<VintraceResult<PaginatedResponse<BulkWineDetails>>> => {\n const [pageData, pageError] = await this.client.request<GetBulkWineDetailsReportResponse>(\n 'v7/report/vessel-details-report',\n 'GET',\n { responseSchema: GetBulkWineDetailsReportResponseSchema },\n {\n ...params,\n limit: String(pageLimit),\n offset: String(baseOffset + limit + relativeOffset),\n }\n );\n\n if (pageError) {\n return [null, pageError];\n }\n\n if (!pageData) {\n return [null, null];\n }\n\n return [\n {\n totalResults: pageData.totalResults ?? 0,\n offset: pageData.offset ?? baseOffset + limit + relativeOffset,\n limit: pageData.limit ?? pageLimit,\n first: pageData.first ?? null,\n previous: pageData.previous ?? null,\n next: pageData.next ?? null,\n last: pageData.last ?? null,\n results: pageData.results ?? [],\n },\n null,\n ];\n };\n\n try {\n for await (const item of paginate(pageFetcher, { limit })) {\n allResults.push(item);\n }\n } catch (error) {\n if (error instanceof VintraceError) {\n return [null, error];\n }\n return [null, new VintraceError(error instanceof Error ? error.message : 'Unknown error', 0)];\n }\n\n return [\n {\n ...response,\n results: allResults,\n },\n null,\n ];\n }\n}\n\nexport interface CostsBusinessUnitTransactionsParams {\n startDate: number;\n endDate: number;\n limit?: number;\n offset?: number;\n businessUnit?: string;\n wineryName?: string;\n wineryId?: number;\n}\n\nclass CostsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Return bulk wine cost movements between two dates.\n *\n * Returns business unit transaction details for cost movements within a date range.\n */\n async businessUnitTransactions(\n params: CostsBusinessUnitTransactionsParams\n ): Promise<VintraceResult<TransactionDetails[]>> {\n const limit = params?.limit ?? 100;\n const firstResponse = await this.client.request<GetBusinessUnitTransactionsResponse>(\n 'v7/costs/business-unit-transactions',\n 'GET',\n { responseSchema: GetBusinessUnitTransactionsResponseSchema },\n { ...params, limit: String(limit), offset: String(params.offset ?? 0) }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResults ?? response.results?.length ?? 0;\n if (totalCount <= limit) {\n return [response.results ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: TransactionDetails[] = [...(response.results ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<GetBusinessUnitTransactionsResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<GetBusinessUnitTransactionsResponse>(\n 'v7/costs/business-unit-transactions',\n 'GET',\n { responseSchema: GetBusinessUnitTransactionsResponseSchema },\n { ...params, limit: String(limit), offset: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.results) {\n allResults.push(...pageData.results);\n }\n }\n }\n\n return [allResults, null];\n }\n}\n\nexport interface WineBatchesListParams {\n limit?: number;\n offset?: number;\n ids?: string;\n include?: string;\n}\n\nclass WineBatchesClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Get a list of wine batches.\n *\n * Returns a paginated list of wine batches.\n */\n async getAll(params?: WineBatchesListParams): Promise<VintraceResult<unknown[]>> {\n const limit = params?.limit ?? 100;\n const firstResponse = await this.client.request<unknown>(\n 'v7/operation/wine-batches',\n 'GET',\n {},\n { ...params, limit: String(limit), offset: String(params?.offset ?? 0) }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0] as { totalResults?: number; results?: unknown[] } | null;\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResults ?? response.results?.length ?? 0;\n if (totalCount <= limit) {\n return [response.results ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n const allResults: unknown[] = [...(response.results ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<unknown>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<unknown>(\n 'v7/operation/wine-batches',\n 'GET',\n {},\n { ...params, limit: String(limit), offset: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n const pData = pageData as { results?: unknown[] } | null;\n if (pData?.results) {\n allResults.push(...pData.results);\n }\n }\n }\n\n return [allResults, null];\n }\n\n /**\n * Create a wine batch.\n */\n create(data: unknown): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v7/operation/wine-batches', 'POST', {}, data);\n }\n}\n\nclass TirageClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Get a tirage by operation ID.\n *\n * Returns a single tirage by its operation ID.\n */\n get(operationId: string): Promise<VintraceResult<TirageSuccessResponse>> {\n return this.client.request<TirageSuccessResponse>(`v7/operation/tirage/${operationId}`, 'GET', {\n responseSchema: TirageSuccessResponseSchema,\n });\n }\n\n /**\n * Patch a tirage.\n *\n * Updates a tirage record.\n */\n patch(operationId: string, data: unknown): Promise<VintraceResult<TirageSuccessResponse>> {\n return this.client.request<TirageSuccessResponse>(\n `v7/operation/tirage/${operationId}`,\n 'PATCH',\n { responseSchema: TirageSuccessResponseSchema },\n data\n );\n }\n}\n\nclass BarrelsMovementsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Create a barrels movement.\n *\n * Creates a new barrels movement in the system.\n */\n post(data: unknown): Promise<VintraceResult<BarrelsMovement>> {\n return this.client.request<BarrelsMovement>(\n 'v7/operation/barrels-movements',\n 'POST',\n { requestSchema: CreateBarrelsMovementRequestSchema },\n data\n );\n }\n}\n\nclass FruitIntakesClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Create a fruit intake.\n *\n * Record a new fruit intake transaction.\n */\n create(data: unknown): Promise<VintraceResult<CreateFruitIntakeSuccessResponse>> {\n return this.client.request<CreateFruitIntakeSuccessResponse>(\n 'v7/operation/fruit-intakes',\n 'POST',\n {\n requestSchema: FruitIntakeRequestSchema,\n responseSchema: CreateFruitIntakeSuccessResponseSchema,\n },\n data\n );\n }\n\n /**\n * Update pricing for a fruit intake.\n *\n * Update the pricing related data for this fruit intake record.\n */\n updatePricing(\n fruitIntakeId: string,\n data: UpdateFruitIntakePricing\n ): Promise<VintraceResult<UpdateFruitIntakePricingResponse>> {\n return this.client.request<UpdateFruitIntakePricingResponse>(\n `v7/operation/fruit-intakes/${fruitIntakeId}/pricing`,\n 'PUT',\n {\n requestSchema: UpdateFruitIntakePricingSchema,\n responseSchema: UpdateFruitIntakePricingResponseSchema,\n },\n data\n );\n }\n\n /**\n * Update metrics for a fruit intake.\n *\n * Update the metrics for this fruit intake record.\n */\n updateMetrics(\n fruitIntakeId: string,\n data: UpdateMetrics\n ): Promise<VintraceResult<UpdateMetricsResponse>> {\n return this.client.request<UpdateMetricsResponse>(\n `v7/operation/fruit-intakes/${fruitIntakeId}/metrics`,\n 'PUT',\n { responseSchema: UpdateMetricsResponseSchema, requestSchema: UpdateMetricsSchema },\n data\n );\n }\n}\n\nclass DocumentsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Upload a file to an operation.\n *\n * Attach documents to a specified operation.\n */\n attach(data: unknown): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v7/operation/operation/documents', 'PUT', {}, data);\n }\n}\n\nexport interface StockDispatchesListParams {\n limit?: number;\n offset?: number;\n}\n\nclass StockClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Receive stock.\n *\n * Perform a receive stock operation in the system.\n */\n receive(data: unknown): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v7/stock/receivals', 'POST', {}, data);\n }\n\n /**\n * Get all stock dispatches.\n *\n * Returns a paginated list of stock dispatch actions.\n */\n async getDispatches(params?: StockDispatchesListParams): Promise<VintraceResult<unknown[]>> {\n const limit = params?.limit ?? 100;\n const firstResponse = await this.client.request<unknown>(\n 'v7/stock/dispatches',\n 'GET',\n {},\n { ...params, limit: String(limit), offset: String(params?.offset ?? 0) }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0] as { totalResults?: number; results?: unknown[] } | null;\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResults ?? response.results?.length ?? 0;\n if (totalCount <= limit) {\n return [response.results ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n const allResults: unknown[] = [...(response.results ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<unknown>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<unknown>(\n 'v7/stock/dispatches',\n 'GET',\n {},\n { ...params, limit: String(limit), offset: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n const pData = pageData as { results?: unknown[] } | null;\n if (pData?.results) {\n allResults.push(...pData.results);\n }\n }\n }\n\n return [allResults, null];\n }\n}\n\nclass VesselsClient {\n constructor(private client: VintraceClient) {}\n\n getBarrel(id: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v7/vessel/barrels/${id}`, 'GET');\n }\n\n getBarrelGroup(id: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v7/vessel/barrel-groups/${id}`, 'GET');\n }\n\n createTank(data: unknown): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v7/vessel/tanks', 'POST', {}, data);\n }\n\n getTank(id: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v7/vessel/tanks/${id}`, 'GET');\n }\n\n getTanker(id: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v7/vessel/tankers/${id}`, 'GET');\n }\n\n getBin(id: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v7/vessel/bins/${id}`, 'GET');\n }\n}\n\nclass PurchaseOrdersClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Create or update a purchase order.\n */\n create(data: unknown): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v7/account/purchase-orders', 'POST', {}, data);\n }\n\n /**\n * Get purchase order details by id.\n */\n async get(id: string): Promise<VintraceResult<PurchaseOrder>> {\n const [response, error] = await this.client.request<PurchaseOrderResponse>(\n `v7/account/purchase-orders/${id}`,\n 'GET',\n { responseSchema: PurchaseOrderResponseSchema }\n );\n if (error) return [null, error];\n if (!response?.data) return [null, null];\n return [response.data, null];\n }\n}\n\nclass TransactionsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Transaction search.\n *\n * Returns a list of transactions matching search criteria.\n */\n async search(params?: TransactionSearchParams): Promise<VintraceResult<unknown[]>> {\n const limit = params?.maxResults ? params.maxResults : 100;\n const firstResponse = await this.client.request<TransactionSearchResponse>(\n 'v6/transaction/search',\n 'GET',\n { responseSchema: TransactionSearchResponseSchema },\n { ...params, maxResults: limit, firstResult: 0 }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.results?.length ?? 0;\n if (totalCount <= limit) {\n return [response.results ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: unknown[] = [...(response.results ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<TransactionSearchResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<TransactionSearchResponse>(\n 'v6/transaction/search',\n 'GET',\n { responseSchema: TransactionSearchResponseSchema },\n { ...params, maxResults: limit, firstResult: offset }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.results) {\n allResults.push(...pageData.results);\n }\n }\n }\n\n return [allResults, null];\n }\n}\n\nclass IntakeOperationsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Fruit intake operation search.\n *\n * Returns a list of fruit intake operations matching search criteria.\n */\n async search(params?: IntakeOperationSearchParams): Promise<VintraceResult<unknown[]>> {\n const limit = params?.maxResults ? params.maxResults : 100;\n const firstResponse = await this.client.request<IntakeOperationSearchResponse>(\n 'v6/intake-operations/search',\n 'GET',\n { responseSchema: IntakeOperationSearchResponseSchema },\n { ...params, maxResults: limit, firstResult: 0 }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.results?.length ?? 0;\n if (totalCount <= limit) {\n return [response.results ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: unknown[] = [...(response.results ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<IntakeOperationSearchResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<IntakeOperationSearchResponse>(\n 'v6/intake-operations/search',\n 'GET',\n { responseSchema: IntakeOperationSearchResponseSchema },\n { ...params, maxResults: limit, firstResult: offset }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.results) {\n allResults.push(...pageData.results);\n }\n }\n }\n\n return [allResults, null];\n }\n}\n\nclass SampleOperationsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Maturity samples search.\n *\n * Returns a list of maturity samples matching search criteria from\n * `GET v6/sample-operations/search`.\n *\n * **Pagination behaviour:**\n * - By default (`maxResults` and `firstResult` omitted) the method\n * auto-paginates and returns **all** matching records by following the\n * API's `nextResult` cursor until a short page signals the end.\n * - Pass `maxResults` and/or `firstResult` to control pagination yourself —\n * in that case a single page is returned as-is.\n *\n * @param params.blockId - Filter by vintrace block ID.\n * @param params.blockName - Filter by block name (partial match).\n * @param params.vineyardId - Filter by vineyard ID.\n * @param params.vineyardName - Filter by vineyard name.\n * @param params.growerId - Filter by grower ID.\n * @param params.growerName - Filter by grower name.\n * @param params.ownerId - Filter by owner ID.\n * @param params.ownerName - Filter by owner name.\n * @param params.vintage - Filter by vintage year in YYYY format (e.g. `\"2022\"`).\n * @param params.operationId - Filter by a specific operation ID.\n * @param params.processId - Filter by delivery process ID.\n * @param params.externalBlockId - Filter by external block ID.\n * @param params.externalSystemBlocksOnly - Only return blocks that have an external ID set.\n * @param params.recordedAfter - Only return records with an effective date after this\n * timestamp (milliseconds since Unix epoch, e.g. `157813337000`).\n * @param params.recordedBefore - Only return records with an effective date before this\n * timestamp (milliseconds since Unix epoch, e.g. `157813337000`).\n * @param params.modifiedSince - Only return records added/modified/reversed since this\n * timestamp (milliseconds since Unix epoch).\n * @param params.maxResults - Page size (default `100`). Supply this to opt out of\n * auto-pagination and receive a single page.\n * @param params.firstResult - Zero-based offset to start from. Supply this together\n * with `maxResults` to manually page through results.\n * @param params.customAdapter - Special adapter reference for customised `additionalDetails`\n * fields (use as directed by vintrace support).\n *\n * @example\n * // Auto-paginate — returns every matching sample\n * const [samples, error] = await client.v6.sampleOperations.search({\n * vintage: '2023',\n * recordedBefore: String(Date.now()),\n * });\n *\n * @example\n * // Manual page — first 20 results only\n * const [page, error] = await client.v6.sampleOperations.search({\n * maxResults: 20,\n * firstResult: 0,\n * });\n */\n async search(params?: SampleOperationSearchParams): Promise<VintraceResult<unknown[]>> {\n const limit = params?.maxResults ?? 100;\n const firstResponse = await this.client.request<SampleOperationSearchResponse>(\n 'v6/sample-operations/search',\n 'GET',\n { responseSchema: SampleOperationSearchResponseSchema },\n { ...params, maxResults: limit, firstResult: params?.firstResult ?? 0 }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const firstPage = response.samples ?? [];\n // If the caller supplied an explicit maxResults or firstResult, return the\n // single page as-is — they are controlling pagination themselves.\n if (params?.maxResults != null || params?.firstResult != null) {\n return [firstPage, null];\n }\n\n const allResults: unknown[] = [...firstPage];\n\n // The API signals \"no more pages\" by returning fewer items than the limit,\n // not by setting nextResult to null (nextResult is always a number).\n let nextOffset: number | null | undefined =\n firstPage.length >= limit ? response.nextResult : null;\n while (nextOffset != null) {\n const [pageData, pageError] = await this.client.request<SampleOperationSearchResponse>(\n 'v6/sample-operations/search',\n 'GET',\n { responseSchema: SampleOperationSearchResponseSchema },\n { ...params, maxResults: limit, firstResult: nextOffset }\n );\n if (pageError) {\n return [null, pageError];\n }\n const page = pageData?.samples ?? [];\n allResults.push(...page);\n // Stop when this page came back short (last page).\n nextOffset = page.length >= limit ? (pageData?.nextResult ?? null) : null;\n }\n\n return [allResults, null];\n }\n}\n\nclass BlockAssessmentsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Create a block assessment.\n *\n * Upsert the assessment data for a block.\n */\n create(data: unknown): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v6/block-assessments/create', 'POST', {}, data);\n }\n}\n\nclass MrpStockClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * View a single stock item.\n *\n * Get a single stock item by ID with optional expand parameter.\n */\n get(id: string, expand?: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(\n `v6/mrp/stock/${id}`,\n 'GET',\n {},\n expand ? { expand } : undefined\n );\n }\n\n getFields(id: string): Promise<VintraceResult<unknown>> {\n /**\n * View list of details fields.\n *\n * Returns a list of detail fields for a stock item.\n */\n return this.client.request<unknown>(`v6/mrp/stock/${id}/fields`, 'GET');\n }\n\n getDistributions(id: string): Promise<VintraceResult<unknown>> {\n /**\n * View distributions.\n *\n * Returns distributions for a stock item.\n */\n return this.client.request<unknown>(`v6/mrp/stock/${id}/distributions`, 'GET');\n }\n\n getHistoryItems(id: string, params: MrpStockHistoryParams): Promise<VintraceResult<unknown>> {\n /**\n * View History items.\n *\n * A paginated list of history items for a stock item.\n */\n return this.client.request<unknown>(`v6/mrp/stock/${id}/history-items`, 'GET', {}, params);\n }\n\n getRawComponents(id: string): Promise<VintraceResult<unknown>> {\n /**\n * View raw components.\n *\n * Returns a paginated list of raw components for a stock item.\n */\n return this.client.request<unknown>(`v6/mrp/stock/${id}/raw-components`, 'GET');\n }\n\n getNotes(id: string, params?: MrpStockNotesParams): Promise<VintraceResult<unknown>> {\n /**\n * Get notes for a stock item.\n *\n * Returns notes associated with a stock item.\n */\n return this.client.request<unknown>(`v6/mrp/stock/${id}/notes`, 'GET', {}, params);\n }\n\n postNote(id: string, data: unknown): Promise<VintraceResult<unknown>> {\n /**\n * Create a note for a stock item.\n *\n * Adds a new note to a stock item.\n */\n return this.client.request<unknown>(`v6/mrp/stock/${id}/notes`, 'POST', {}, data);\n }\n\n getNote(id: string, noteId: string): Promise<VintraceResult<unknown>> {\n /**\n * Get a specific note for a stock item.\n *\n * Returns a specific note by ID for a stock item.\n */\n return this.client.request<unknown>(`v6/mrp/stock/${id}/notes/${noteId}`, 'GET');\n }\n\n updateNote(id: string, noteId: string, data: unknown): Promise<VintraceResult<unknown>> {\n /**\n * Update a note for a stock item.\n *\n * Updates an existing note on a stock item.\n */\n return this.client.request<unknown>(\n `v6/mrp/stock/${id}/notes/${noteId}/updates`,\n 'POST',\n {},\n data\n );\n }\n\n getBulkInfo(id: string): Promise<VintraceResult<unknown>> {\n /**\n * Get bulk info for a stock item.\n *\n * Returns bulk information for a stock item.\n */\n return this.client.request<unknown>(`v6/mrp/stock/${id}/bulk-info`, 'GET');\n }\n}\n\nexport interface StockLookupParams {\n code?: string;\n id?: string;\n}\n\nclass InventoryClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * List available stock.\n *\n * Returns a list of all stock items.\n */\n async getAll(params?: InventoryListParams): Promise<VintraceResult<unknown[]>> {\n const limit = params?.max ? parseInt(params.max, 10) : 100;\n const firstResponse = await this.client.request<InventoryResponse>(\n 'v6/inventory',\n 'GET',\n { responseSchema: InventoryResponseSchema },\n { ...params, max: String(limit), first: '0' }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.results?.length ?? 0;\n if (totalCount <= limit) {\n return [response.results ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: unknown[] = [...(response.results ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<InventoryResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<InventoryResponse>(\n 'v6/inventory',\n 'GET',\n { responseSchema: InventoryResponseSchema },\n { ...params, max: String(limit), first: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.results) {\n allResults.push(...pageData.results);\n }\n }\n }\n\n return [allResults, null];\n }\n\n /**\n * Get stock item by code or id.\n *\n * Returns a single stock item by code or id.\n */\n lookup(params?: StockLookupParams): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v6/stock/lookup', 'GET', {}, params);\n }\n}\n\nclass SearchClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * List results for item type.\n *\n * Returns search results for a specific item type.\n * Supported types are grading, owner, program, varietal, vintage,\n * productState, region, block, grower, productCategory, batch, product, tank,\n * vessel, containerEquipment, barrel, bin.\n */\n async list(params: SearchListParams): Promise<VintraceResult<unknown[]>> {\n const limit = params?.max ? parseInt(params.max, 10) : 100;\n const firstResponse = await this.client.request<SearchListResponse>(\n 'v6/search/list',\n 'GET',\n { responseSchema: SearchListResponseSchema },\n { ...params, max: String(limit), first: '0' }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.results?.length ?? 0;\n if (totalCount <= limit) {\n return [response.results ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: unknown[] = [...(response.results ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<SearchListResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<SearchListResponse>(\n 'v6/search/list',\n 'GET',\n { responseSchema: SearchListResponseSchema },\n { ...params, max: String(limit), first: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.results) {\n allResults.push(...pageData.results);\n }\n }\n }\n\n return [allResults, null];\n }\n}\n\nclass ProductAnalysisClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Get analysis data for a product by its numeric ID.\n * The endpoint path matches the `productAnalysisEndpoint` field returned on a Product.\n * e.g. GET v6/product-analysis/{productId}\n */\n get(\n productId: number,\n params?: ProductAnalysisParams\n ): Promise<VintraceResult<ProductAnalysisResponse>> {\n return this.client.request<ProductAnalysisResponse>(\n `v6/product-analysis/${productId}`,\n 'GET',\n { responseSchema: ProductAnalysisResponseSchema },\n params\n );\n }\n\n /**\n * Fetch analysis for multiple product IDs in parallel.\n * Respects the client's `parallelLimit` option (default 5 concurrent).\n * Returns `VintraceAggregateError` if any individual request fails.\n */\n getMany(\n productIds: number[],\n params?: ProductAnalysisParams\n ): Promise<VintraceResult<ProductAnalysisResponse[]>> {\n return this.batchGet(productIds, (id) => this.get(id, params));\n }\n\n private async batchGet(\n ids: number[],\n fetchFn: (id: number) => Promise<VintraceResult<ProductAnalysisResponse>>\n ): Promise<VintraceResult<ProductAnalysisResponse[]>> {\n const limit = this.client.options.parallelLimit;\n const errors: VintraceError[] = [];\n const data: ProductAnalysisResponse[] = [];\n\n for (let i = 0; i < ids.length; i += limit) {\n const chunk = ids.slice(i, i + limit);\n const results = await Promise.allSettled(chunk.map((id) => fetchFn(id)));\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n const [item, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (item !== null) {\n data.push(item);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [data, null];\n }\n}\n\nclass ProductCompositionClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Get composition (blend components) for a product by its numeric ID.\n * The endpoint path matches the `productCompositionEndpoint` field returned on a Product.\n * e.g. GET v6/product-composition/{productId}\n */\n get(productId: number): Promise<VintraceResult<ProductCompositionResponse>> {\n return this.client.request<ProductCompositionResponse>(\n `v6/product-composition/${productId}`,\n 'GET',\n { responseSchema: ProductCompositionResponseSchema }\n );\n }\n}\n\nclass ProductJobsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Get job history for a product by its numeric ID.\n * Returns the job details and history for a product including transfers,\n * treatments, and other operations performed on it.\n * e.g. GET v6/product-jobs/{productId}\n */\n get(productId: number): Promise<VintraceResult<ProductJobResponse>> {\n return this.client.request<ProductJobResponse>(`v6/product-jobs/${productId}`, 'GET', {\n responseSchema: ProductJobResponseSchema,\n });\n }\n\n /**\n * Get job history for multiple products by their numeric IDs.\n * Respects the client's `parallelLimit` option (default 5 concurrent).\n * Returns `VintraceAggregateError` if any individual request fails.\n */\n getAll(productIds: number[]): Promise<VintraceResult<ProductJobResponse[]>> {\n return this.batchGet(productIds, (id) => this.get(id));\n }\n\n private async batchGet(\n ids: number[],\n fetchFn: (id: number) => Promise<VintraceResult<ProductJobResponse>>\n ): Promise<VintraceResult<ProductJobResponse[]>> {\n const limit = this.client.options.parallelLimit;\n const errors: VintraceError[] = [];\n const data: ProductJobResponse[] = [];\n\n for (let i = 0; i < ids.length; i += limit) {\n const chunk = ids.slice(i, i + limit);\n const results = await Promise.allSettled(chunk.map((id) => fetchFn(id)));\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n const [item, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (item !== null) {\n data.push(item);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [data, null];\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/client/config.ts","../src/client/errors.ts","../src/validation/index.ts","../src/http/fetch.ts","../src/http/pagination.ts","../src/client/utils.ts","../src/validation/schemas.ts","../src/client/VintraceClient.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["export interface VintraceClientOptions {\n timeout?: number;\n maxRetries?: number;\n parallelLimit?: number;\n validateRequests?: boolean;\n validateResponses?: boolean;\n}\n\nexport interface VintraceClientConfig {\n baseUrl: string;\n organization: string;\n token: string;\n options?: VintraceClientOptions;\n}\n\nexport const DEFAULT_OPTIONS: Required<VintraceClientOptions> = {\n timeout: 30000,\n maxRetries: 3,\n parallelLimit: 5,\n validateRequests: true,\n validateResponses: true,\n};\n","export class VintraceError extends Error {\n public readonly status: number;\n public readonly correlationId?: string;\n public readonly body?: unknown;\n\n constructor(message: string, status: number, correlationId?: string, body?: unknown) {\n super(message);\n this.name = 'VintraceError';\n this.status = status;\n this.correlationId = correlationId;\n this.body = body;\n Error.captureStackTrace(this, this.constructor);\n }\n}\n\nexport class VintraceAuthenticationError extends VintraceError {\n constructor(message = 'Authentication failed', correlationId?: string, body?: unknown) {\n super(message, 401, correlationId, body);\n this.name = 'VintraceAuthenticationError';\n }\n}\n\nexport class VintraceRateLimitError extends VintraceError {\n public readonly retryAfter?: number;\n\n constructor(\n message = 'Rate limit exceeded',\n retryAfter?: number,\n correlationId?: string,\n body?: unknown\n ) {\n super(message, 429, correlationId, body);\n this.name = 'VintraceRateLimitError';\n this.retryAfter = retryAfter;\n }\n}\n\nexport class VintraceNotFoundError extends VintraceError {\n constructor(message = 'Resource not found', correlationId?: string, body?: unknown) {\n super(message, 404, correlationId, body);\n this.name = 'VintraceNotFoundError';\n }\n}\n\nexport class VintraceValidationError extends VintraceError {\n constructor(message = 'Validation failed', status = 400, correlationId?: string, body?: unknown) {\n super(message, status, correlationId, body);\n this.name = 'VintraceValidationError';\n }\n}\n\nexport class VintraceServerError extends VintraceError {\n constructor(message = 'Server error', status: number, correlationId?: string, body?: unknown) {\n super(message, status, correlationId, body);\n this.name = 'VintraceServerError';\n }\n}\n\nexport class VintraceAggregateError extends VintraceError {\n public readonly errors: VintraceError[];\n\n constructor(errors: VintraceError[]) {\n const message =\n errors.length === 1\n ? errors[0].message\n : `${errors.length} errors occurred: ${errors.map((e) => e.message).join('; ')}`;\n super(\n message,\n errors[0]?.status ?? 0,\n errors[0]?.correlationId,\n errors.map((e) => e.body)\n );\n this.name = 'VintraceAggregateError';\n this.errors = errors;\n }\n}\n\nexport function isRetryableStatus(status: number): boolean {\n return [408, 429, 500, 502, 503, 504].includes(status);\n}\n","import { z, ZodError, ZodType, ZodIssue } from 'zod';\nimport { VintraceError } from '../client/errors';\nimport { VintraceResult } from '../types/result';\n\nexport class VintraceValidationSchemaError extends VintraceError {\n constructor(\n message: string,\n public readonly errors: ZodIssue[],\n correlationId?: string\n ) {\n super(message, 422, correlationId);\n this.name = 'VintraceValidationSchemaError';\n }\n}\n\nexport function validateResponse<T>(\n schema: ZodType<T>,\n data: unknown,\n correlationId?: string\n): VintraceResult<T> {\n try {\n const validated = schema.parse(data);\n return [validated, null];\n } catch (error) {\n if (error instanceof ZodError) {\n const message = error.issues\n .map((e: ZodIssue) => `${e.path.join('.')}: ${e.message}`)\n .join('; ');\n return [null, new VintraceValidationSchemaError(message, error.issues, correlationId)];\n }\n return [null, new VintraceError('Response validation failed', 500, correlationId)];\n }\n}\n\nexport function validateRequest<T>(\n schema: ZodType<T>,\n data: unknown,\n correlationId?: string\n): VintraceResult<T> {\n try {\n const validated = schema.parse(data);\n return [validated, null];\n } catch (error) {\n if (error instanceof ZodError) {\n const message = error.issues\n .map((e: ZodIssue) => `${e.path.join('.')}: ${e.message}`)\n .join('; ');\n return [null, new VintraceValidationSchemaError(message, error.issues, correlationId)];\n }\n return [null, new VintraceError('Request validation failed', 500, correlationId)];\n }\n}\n\nexport { z };\nexport type { ZodType, ZodIssue };\n","import { DEFAULT_OPTIONS } from '../client/config';\nimport {\n VintraceError,\n VintraceAuthenticationError,\n VintraceRateLimitError,\n VintraceNotFoundError,\n VintraceValidationError,\n VintraceServerError,\n isRetryableStatus,\n} from '../client/errors';\nimport { VintraceResult } from '../types/result';\nimport { ZodType } from 'zod';\nimport { validateRequest, validateResponse } from '../validation';\n\nexport interface RequestOptions<T = unknown> {\n timeout?: number;\n maxRetries?: number;\n validateResponse?: boolean;\n validateRequest?: boolean;\n responseSchema?: ZodType<T>;\n requestSchema?: ZodType<unknown>;\n}\n\nfunction generateCorrelationId(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\nfunction getRetryAfterFromHeaders(headers: Headers): number | undefined {\n const retryAfter = headers.get('retry-after');\n if (retryAfter) {\n const parsed = parseInt(retryAfter, 10);\n return isNaN(parsed) ? undefined : parsed;\n }\n return undefined;\n}\n\nexport class VintraceFetchError extends VintraceError {\n constructor(message: string, status: number, correlationId?: string, body?: unknown) {\n super(message, status, correlationId, body);\n this.name = 'VintraceFetchError';\n }\n}\n\nexport async function vintraceFetch<T = unknown>(\n baseUrl: string,\n organization: string,\n token: string,\n endpoint: string,\n method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE',\n options: RequestOptions = {},\n body?: unknown\n): Promise<VintraceResult<T>> {\n const timeout = options.timeout ?? DEFAULT_OPTIONS.timeout;\n const maxRetries = options.maxRetries ?? DEFAULT_OPTIONS.maxRetries;\n\n const isBodylessMethod = method === 'GET' || method === 'DELETE';\n let url = `${baseUrl}/${organization}/api/${endpoint}`;\n const correlationId = generateCorrelationId();\n\n if (isBodylessMethod && body && typeof body === 'object') {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(body as Record<string, unknown>)) {\n if (value !== undefined && value !== null) {\n params.set(key, String(value));\n }\n }\n const qs = params.toString();\n if (qs) url = `${url}?${qs}`;\n }\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n 'correlation-id': correlationId,\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n };\n\n if (options.validateRequest && options.requestSchema && body) {\n const [validatedBody, requestError] = validateRequest(\n options.requestSchema,\n body,\n correlationId\n );\n if (requestError) {\n return [null, requestError];\n }\n body = validatedBody;\n }\n\n try {\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n try {\n const response = await fetch(url, {\n method,\n headers,\n body: isBodylessMethod ? undefined : body ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n const responseCorrelationId = response.headers.get('correlation-id') || correlationId;\n\n if (!response.ok) {\n let responseBody: unknown;\n const contentType = response.headers.get('content-type');\n try {\n if (contentType?.includes('application/json')) {\n responseBody = await response.json();\n } else {\n responseBody = await response.text();\n }\n } catch {\n // ignore body parse failure\n }\n\n const retryAfter = getRetryAfterFromHeaders(response.headers);\n let error: VintraceError;\n\n if (response.status === 401) {\n error = new VintraceAuthenticationError(\n 'Authentication failed',\n responseCorrelationId,\n responseBody\n );\n } else if (response.status === 404) {\n error = new VintraceNotFoundError(\n 'Resource not found',\n responseCorrelationId,\n responseBody\n );\n } else if (response.status === 429) {\n error = new VintraceRateLimitError(\n 'Rate limit exceeded',\n retryAfter,\n responseCorrelationId,\n responseBody\n );\n } else if (response.status >= 400 && response.status < 500) {\n error = new VintraceValidationError(\n 'Request validation failed',\n response.status,\n responseCorrelationId,\n responseBody\n );\n } else if (response.status >= 500) {\n error = new VintraceServerError(\n 'Server error',\n response.status,\n responseCorrelationId,\n responseBody\n );\n } else {\n error = new VintraceError(\n `Request failed with status ${response.status}`,\n response.status,\n responseCorrelationId,\n responseBody\n );\n }\n\n if (error instanceof VintraceRateLimitError && attempt < maxRetries) {\n const delay = error.retryAfter ?? Math.pow(2, attempt) * 1000;\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n if (error instanceof VintraceAuthenticationError) {\n return [null, error];\n }\n if (isRetryableStatus(error.status) && attempt < maxRetries) {\n const delay = Math.pow(2, attempt) * 1000;\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n\n return [null, error];\n }\n\n if (response.status === 204) {\n return [null, null];\n }\n\n const data = (await response.json()) as T;\n\n if (options.validateResponse && options.responseSchema) {\n const [validatedData, responseError] = validateResponse(\n options.responseSchema,\n data,\n responseCorrelationId\n );\n if (responseError) {\n return [null, responseError];\n }\n return [validatedData as T, null];\n }\n\n return [data, null];\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof VintraceError) {\n throw error;\n }\n\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n if (attempt < maxRetries) {\n const delay = Math.pow(2, attempt) * 1000;\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n return [null, new VintraceError('Request timeout', 408, correlationId)];\n }\n return [null, new VintraceFetchError(error.message, 0, correlationId)];\n }\n\n return [null, new VintraceFetchError('Unknown error', 0, correlationId)];\n }\n }\n\n return [null, new VintraceError('Max retries exceeded', 0, correlationId)];\n } catch (error) {\n if (error instanceof VintraceError) {\n return [null, error];\n }\n return [\n null,\n new VintraceFetchError(\n error instanceof Error ? error.message : 'Unknown error',\n 0,\n correlationId\n ),\n ];\n }\n}\n","import { VintraceResult } from '../types/result';\nimport { VintraceError, VintraceAggregateError } from '../client/errors';\n\nexport interface PaginatedResponse<T> {\n totalResults: number;\n offset: number;\n limit: number;\n first: string | null;\n previous: string | null;\n next: string | null;\n last: string | null;\n results: T[];\n}\n\nexport interface PaginationOptions {\n limit?: number;\n concurrency?: number;\n}\n\nexport async function* paginate<T>(\n fetchFn: (offset: number, limit: number) => Promise<VintraceResult<PaginatedResponse<T>>>,\n options: PaginationOptions = {}\n): AsyncGenerator<T> {\n const limit = options.limit ?? 100;\n let offset = 0;\n let hasMore = true;\n\n while (hasMore) {\n const [response, error] = await fetchFn(offset, limit);\n\n if (error) {\n throw error;\n }\n\n if (response === null) {\n break;\n }\n\n for (const item of response.results) {\n yield item;\n }\n\n offset += limit;\n hasMore = response.next !== null;\n }\n}\n\nexport async function batchGet<T>(\n ids: string[],\n fetchFn: (id: string) => Promise<VintraceResult<T>>,\n options: { concurrency?: number } = {}\n): Promise<VintraceResult<T[]>> {\n const concurrency = options.concurrency ?? 5;\n const errors: VintraceError[] = [];\n const results: T[] = [];\n\n for (let i = 0; i < ids.length; i += concurrency) {\n const batch = ids.slice(i, i + concurrency);\n const batchResults = await Promise.allSettled(batch.map((id) => fetchFn(id)));\n\n for (const result of batchResults) {\n if (result.status === 'fulfilled') {\n const [data, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (data !== null) {\n results.push(data);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [results, null];\n}\n","import { VintraceResult } from '../types/result';\nimport { VintraceError, VintraceAggregateError } from './errors';\n\n/**\n * Fetch multiple items by id in parallel (all at once), collecting errors.\n * Returns VintraceAggregateError if any individual request fails.\n */\nexport async function batchFetch<T>(\n ids: string[],\n fetchFn: (id: string) => Promise<VintraceResult<T>>\n): Promise<VintraceResult<T[]>> {\n const results = await Promise.allSettled(ids.map((id) => fetchFn(id)));\n const errors: VintraceError[] = [];\n const data: T[] = [];\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n const [item, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (item !== null) {\n data.push(item);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [data, null];\n}\n","import { z } from 'zod';\n\nexport const ExtIdentifiableEntitySchema = z.object({\n id: z.number().optional(),\n extId: z.string().optional(),\n name: z.string().optional(),\n});\n\nexport const IdentifiableEntitySchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n});\n\nexport const CodedIdentifiableEntitySchema = z.object({\n id: z.number().optional(),\n code: z.string().optional(),\n});\n\nexport const ResourceLinkSchema = z.object({\n rel: z.string().optional(),\n href: z.string().optional(),\n});\n\nexport const FieldValuePairSchema = z.object({\n fieldName: z.string().optional(),\n value: z.unknown().optional(),\n});\n\nexport const WorkOrderJobSchema = z.object({\n id: z.number().optional(),\n type: z.enum(['WINERY', 'MRP']).optional(),\n jobNumber: z.number().optional(),\n status: z\n .enum([\n 'INCOMPLETE',\n 'ASSIGNED',\n 'COMPLETED',\n 'ROLLBACK_REPLAY',\n 'IN_PROGRESS',\n 'PENDING_APPROVAL',\n ])\n .optional(),\n scheduledTime: z.number().optional(),\n finishedTime: z.number().optional(),\n link: ResourceLinkSchema.optional(),\n});\n\nexport const WineryWorkOrderJobSchema = WorkOrderJobSchema.extend({\n operationType: z.string().optional(),\n});\n\nexport const WorkOrderSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n assignedTo: ExtIdentifiableEntitySchema.optional(),\n issuedBy: ExtIdentifiableEntitySchema.optional(),\n status: z\n .enum(['DRAFT', 'READY', 'IN_PROGRESS', 'SUBMITTED', 'COMPLETED', 'CANCELLED', 'REPLAY'])\n .optional(),\n scheduledTime: z.number().optional(),\n summary: z.string().optional(),\n jobs: WineryWorkOrderJobSchema.array().optional(),\n});\n\nexport const GetWorkOrdersSuccessResponseSchema = z.object({\n totalResults: z.number().optional(),\n offset: z.number().optional(),\n limit: z.number().optional(),\n first: z.string().optional(),\n previous: z.string().optional(),\n next: z.string().optional(),\n last: z.string().optional(),\n results: WorkOrderSchema.array().optional(),\n});\n\nexport const ProductLiveMetricMeasurementSchema = z.object({\n name: z.string().optional(),\n value: z.number().optional(),\n unit: z.string().optional(),\n maxVal: z.number().optional(),\n});\n\nexport const ProductLiveMetricSchema = z.object({\n name: z.string().optional(),\n description: z.string().optional(),\n measurements: ProductLiveMetricMeasurementSchema.array().optional(),\n});\n\nexport const VolumeSchema = z.object({\n value: z.number().optional(),\n unit: z.string().optional(),\n});\n\nexport const BeverageTypePropertiesSchema = z.record(z.string(), z.unknown());\n\nexport const ProductSchema = z.object({\n id: z.number().optional(),\n batchCode: z.string().optional(),\n vesselId: z.number().optional(),\n description: z.string().optional(),\n descriptionCanEdit: z.boolean().optional(),\n volume: VolumeSchema.optional(),\n vesselCode: z.string().optional(),\n hasDipTable: z.boolean().optional(),\n dipTableEndpoint: z.string().optional(),\n colour: z.string().optional(),\n physicalProductState: z.string().optional(),\n vesselType: z.string().optional(),\n productStatus: z.string().optional(),\n productAnalysisEndpoint: z.string().optional(),\n productCompositionEndpoint: z.string().optional(),\n productEndpoint: z.string().optional(),\n liveMetrics: ProductLiveMetricSchema.array().optional(),\n fieldValuePairs: FieldValuePairSchema.array().optional(),\n canAccessNotes: z.boolean().optional(),\n notesCount: z.number().optional(),\n notesEndpoint: z.string().optional(),\n beverageTypeProperties: BeverageTypePropertiesSchema.optional(),\n});\n\nexport const ProductVesselDetailsSchema = z.object({\n vesselId: z.number().optional(),\n containerType: z\n .enum(['Tank', 'Barrel', 'Barrel group', 'Bin group', 'Press', 'Bin', 'Tanker'])\n .optional(),\n});\n\nexport const ProductResponseSchema = z.object({\n status: z.string().optional(),\n product: ProductSchema.optional(),\n vessel: ProductVesselDetailsSchema.optional(),\n});\n\nexport const ProductListResponseSchema = z.object({\n status: z.string().optional(),\n products: ProductSchema.array().optional(),\n totalResultCount: z.number().optional(),\n firstResult: z.number().optional(),\n maxResult: z.number().optional(),\n nextURLPath: z.string().nullable().optional(),\n prevURLPath: z.string().nullable().optional(),\n});\n\nexport const ProductUpdateFieldSchema = z.object({\n propertyType: z.string().optional(),\n propertyValue: z.string().optional(),\n propertyId: z.number().optional(),\n});\n\nexport const ProductUpdateDataSchema = z.object({\n productId: z.number().optional(),\n updateFields: ProductUpdateFieldSchema.array().optional(),\n});\n\nexport const ProductUpdateResponseSchema = z.object({\n status: z.string().optional(),\n product: ProductSchema.optional(),\n});\n\nexport const AddressSchema = z.object({\n street1: z.string().nullable(),\n street2: z.string().nullable(),\n city: z.string().nullable(),\n state: z.string().nullable(),\n postalCode: z.string().nullable(),\n country: z.string().nullable(),\n});\n\nexport const SendToAddressSchema = z.object({\n name: z.string().nullable(),\n phone: z.string().nullable(),\n address: AddressSchema.nullable(),\n});\n\nexport const TaxBreakdownSchema = z.object({\n name: z.string(),\n amount: z.number(),\n ratePct: z.number(),\n inclusive: z.boolean(),\n});\n\nexport const SalesOrderItemSchema = z.object({\n id: z.number().optional(),\n itemId: z.number().optional(),\n itemName: z.string().optional(),\n unitPrice: z.number().optional(),\n quantity: z.number().optional(),\n unitOfMeasure: z.string().nullable(),\n discountPct: z.number().nullable(),\n adjustment: z.number().nullable(),\n taxAmount: z.number().optional(),\n lineTotal: z.number().optional(),\n accountId: z.number().optional(),\n accountCode: z.string().optional(),\n taxRateId: z.number().optional(),\n taxRateName: z.string().nullable(),\n});\n\nexport const PriceDetailsSchema = z.object({\n countryCurrencyCode: z.string().optional(),\n taxPolicy: z.string().optional(),\n});\n\nexport const SalesOrderSchema = z.object({\n id: z.number().optional(),\n invoiceDate: z.number().nullable(),\n invoiceDateAsText: z.string(),\n customerId: z.number().optional(),\n customerName: z.string().optional(),\n sendTo: SendToAddressSchema.optional(),\n salesType: z.string().optional(),\n salesPriceListId: z.number().nullable(),\n salesPriceListName: z.string().nullable(),\n priceDetails: PriceDetailsSchema.optional(),\n salesOrderStatus: z.string().optional(),\n salesOrderItems: SalesOrderItemSchema.array().optional(),\n code: z.string().optional(),\n description: z.string().nullable(),\n reference: z.string().nullable(),\n orderDate: z.number().optional(),\n orderDateAsText: z.string(),\n wineryId: z.number().nullable(),\n wineryName: z.string().nullable(),\n fulfillment: z.string().optional(),\n fulfillmentDate: z.number().nullable(),\n fulfillmentDateAsText: z.string(),\n salesRegionId: z.number().nullable(),\n salesRegionCode: z.string().nullable(),\n notes: z.string().nullable(),\n customerPickup: z.boolean().optional(),\n disableAccountsSync: z.boolean().optional(),\n subTotal: z.number().optional(),\n taxBreakdown: TaxBreakdownSchema.array().optional(),\n total: z.number().optional(),\n acctReference: z.string().nullable(),\n posSaleReference: z.string().nullable(),\n ignoreStockError: z.boolean().optional(),\n});\n\nexport const SalesOrderResponseSchema = z.object({\n status: z.string(),\n message: z.string().nullable(),\n salesOrders: SalesOrderSchema.array(),\n totalResultCount: z.number().optional(),\n firstResult: z.number().optional(),\n maxResult: z.number().optional(),\n nextURLPath: z.string().nullable().optional(),\n prevURLPath: z.string().nullable().optional(),\n});\n\nexport const SalesOrderUpdateResponseSchema = z.object({\n status: z.string(),\n message: z.string().nullable(),\n salesOrder: SalesOrderSchema.optional(),\n});\n\nexport const RefundLineItemSchema = z.object({\n id: z.number().optional(),\n itemId: z.number().optional(),\n itemName: z.string().optional(),\n unitPrice: z.number().optional(),\n returnQuantity: z.number().optional(),\n returnTotal: z.number().optional(),\n taxAmount: z.number().optional(),\n});\n\nexport const RefundSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n refundDate: z.number().optional(),\n refundDateAsText: z.string(),\n reference: z.string().nullable(),\n stockReturned: z.boolean().optional(),\n storageAreaId: z.number().nullable(),\n storageAreaName: z.string().nullable(),\n customerId: z.number().optional(),\n customerName: z.string().optional(),\n refundStatus: z.string().optional(),\n notes: z.string().nullable(),\n salesOrderId: z.number().optional(),\n salesOrderName: z.string().optional(),\n subTotal: z.number().optional(),\n total: z.number().optional(),\n taxBreakdown: TaxBreakdownSchema.array().optional(),\n refundLineItems: RefundLineItemSchema.array().optional(),\n posSaleReference: z.string().nullable(),\n disableAccountsSync: z.boolean().optional(),\n acctReference: z.string().nullable(),\n});\n\nexport const RefundResponseSchema = z.object({\n status: z.string(),\n message: z.string().nullable(),\n refunds: RefundSchema.array(),\n totalResultCount: z.number().optional(),\n firstResult: z.number().optional(),\n maxResult: z.number().optional(),\n nextURLPath: z.string().nullable().optional(),\n prevURLPath: z.string().nullable().optional(),\n});\n\nexport const RefundUpdateResponseSchema = z.object({\n status: z.string(),\n message: z.string().nullable(),\n refund: RefundSchema.optional(),\n});\n\nexport const PartySchema = z.object({\n id: z.number().optional(),\n primeName: z.string().optional(),\n givenName: z.string().nullable(),\n phone: z.string().nullable(),\n email: z.string().nullable(),\n address: AddressSchema.optional(),\n isOrganization: z.boolean().optional(),\n});\n\nexport const PartyResponseSchema = z.object({\n status: z.string(),\n message: z.string().nullable(),\n parties: PartySchema.array(),\n totalResultCount: z.number().optional(),\n firstResult: z.number().optional(),\n maxResult: z.number().optional(),\n nextURLPath: z.string().nullable().optional(),\n prevURLPath: z.string().nullable().optional(),\n});\n\nexport const WorkOrderJobDetailSchema = z.object({\n id: z.number().optional(),\n code: z.string().optional(),\n scheduledDate: z.number().nullable(),\n finishedDate: z.number().nullable(),\n scheduledDateAsText: z.string(),\n finishedDateAsText: z.string(),\n status: z.string().optional(),\n assignedBy: z.string().optional(),\n assignedTo: z.string().optional(),\n summaryText: z.string().optional(),\n miniSummaryText: z.string().optional(),\n jobColour: z.string().optional(),\n jobNumber: z.number().optional(),\n stepText: z.string().nullable(),\n steps: z.array(z.unknown()).optional(),\n endpointURL: z.string().optional(),\n jobVersion: z.number().optional(),\n workOrderId: z.number().optional(),\n});\n\nexport const WorkOrderDetailSchema = z.object({\n id: z.number().optional(),\n code: z.string().optional(),\n jobCount: z.number().optional(),\n jobCountText: z.string().optional(),\n status: z.string().optional(),\n assignedTo: z.string().optional(),\n assignedBy: z.string().optional(),\n assignedDate: z.number().optional(),\n scheduledDate: z.number().nullable(),\n assignedDateAsText: z.string(),\n scheduledDateAsText: z.string(),\n canAssign: z.boolean().optional(),\n summary: z.string().optional(),\n indicators: z.array(z.string()).optional(),\n bond: z.string().nullable(),\n winery: z.string().nullable(),\n jobs: WorkOrderJobDetailSchema.array().optional(),\n colourCode: z.string().optional(),\n endpointURL: z.string().optional(),\n});\n\nexport const WorkOrderSearchResponseSchema = z.object({\n firstResult: z.number().optional(),\n maxResult: z.number().optional(),\n totalResultCount: z.number().optional(),\n nextURLPath: z.string().nullable(),\n prevURLPath: z.string().nullable(),\n listText: z.string().optional(),\n workOrders: WorkOrderDetailSchema.array().optional(),\n});\n\nexport const AssignWorkDataSchema = z.object({\n workOrderId: z.number().optional(),\n});\n\nexport const AssignWorkResponseSchema = z.object({\n status: z.string(),\n message: z.string().nullable(),\n jobEndpointURL: z.string().nullable(),\n workOrderEndpointURL: z.string().optional(),\n});\n\nexport const SubmitJobFieldSchema = z.object({\n fieldId: z.string(),\n value: z.string().optional(),\n});\n\nexport const SubmitJobRequestSchema = z.object({\n jobId: z.number().optional(),\n submitType: z.string().optional(),\n fields: SubmitJobFieldSchema.array().optional(),\n});\n\nexport const SubmitWorkOrderStepsResponseSchema = z.object({\n status: z.string(),\n message: z.string().optional(),\n});\n\nexport const PartyUpdateResponseSchema = z.object({\n status: z.string(),\n message: z.string().nullable(),\n party: PartySchema.optional(),\n});\n\n// Partial write schemas — used for request validation on create/update methods\n// where callers supply Partial<T> rather than the full entity shape.\nexport const SalesOrderWriteSchema = SalesOrderSchema.partial();\nexport const RefundWriteSchema = RefundSchema.partial();\nexport const PartyWriteSchema = PartySchema.partial();\n\nexport const TransactionSearchParamsSchema = z.object({\n dateFrom: z.string().optional(),\n dateTo: z.string().optional(),\n ownerName: z.string().optional(),\n batchName: z.string().optional(),\n wineryName: z.string().optional(),\n maxResults: z.number().optional(),\n firstResult: z.number().optional(),\n});\n\nexport const IntakeOperationSearchParamsSchema = z.object({\n modifiedSince: z.string().optional(),\n operationId: z.number().optional(),\n processId: z.number().optional(),\n deliveryDocket: z.string().optional(),\n intakeDocket: z.string().optional(),\n externalWeighTag: z.string().optional(),\n externalSystemBlocksOnly: z.boolean().optional(),\n externalBlockId: z.string().optional(),\n blockId: z.number().optional(),\n blockName: z.string().optional(),\n vineyardId: z.number().optional(),\n vineyardName: z.string().optional(),\n wineryId: z.number().optional(),\n wineryName: z.string().optional(),\n growerType: z.string().optional(),\n growerId: z.number().optional(),\n growerName: z.string().optional(),\n ownerId: z.number().optional(),\n ownerName: z.string().optional(),\n vintage: z.string().optional(),\n recordedAfter: z.string().optional(),\n recordedBefore: z.string().optional(),\n customAdapter: z.string().optional(),\n maxResults: z.number().optional(),\n firstResult: z.number().optional(),\n});\n\nexport const SampleOperationSearchParamsSchema = z.object({\n modifiedSince: z.string().optional(),\n operationId: z.number().optional(),\n processId: z.number().optional(),\n externalSystemBlocksOnly: z.boolean().optional(),\n externalBlockId: z.string().optional(),\n blockId: z.number().optional(),\n blockName: z.string().optional(),\n vineyardId: z.number().optional(),\n vineyardName: z.string().optional(),\n growerId: z.number().optional(),\n growerName: z.string().optional(),\n ownerId: z.number().optional(),\n ownerName: z.string().optional(),\n vintage: z.string().optional(),\n recordedAfter: z.string().optional(),\n recordedBefore: z.string().optional(),\n customAdapter: z.string().optional(),\n maxResults: z.number().optional(),\n firstResult: z.number().optional(),\n});\n\nexport const InventoryListParamsSchema = z.object({\n max: z.string().optional(),\n first: z.string().optional(),\n date: z.string().optional(),\n stockType: z.string().optional(),\n ownerName: z.string().optional(),\n showEquivalentType: z.string().optional(),\n breakoutCosting: z.boolean().optional(),\n disableCommitHeaders: z.boolean().optional(),\n});\n\nexport const SearchListParamsSchema = z.object({\n type: z.string(),\n first: z.string().optional(),\n startsWith: z.string().optional(),\n exactMatch: z.boolean().optional(),\n max: z.string().optional(),\n});\n\nexport const MrpStockHistoryParamsSchema = z.object({\n firstResult: z.number(),\n maxResult: z.number(),\n});\n\nexport const MrpStockNotesParamsSchema = z.object({\n firstResult: z.number().optional(),\n maxResult: z.number().optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Product Analysis\n// ---------------------------------------------------------------------------\n\nexport const RateOfChangeSchema = z.object({\n value: z.number().nullable(),\n sign: z.string().nullable(),\n absValue: z.number().nullable(),\n unit: z.string().nullable(),\n description: z.string().nullable(),\n});\n\nexport const AnalysisMeasurementSchema = z.object({\n value: z.string(),\n rateOfChange: RateOfChangeSchema.nullable(),\n measurementDateText: z.string(),\n measurementDate: z.number(),\n resultId: z.number(),\n processId: z.number(),\n canDelete: z.boolean(),\n canEdit: z.boolean(),\n canReverse: z.boolean(),\n measurementValidity: z.string(),\n});\n\nexport const AnalysisMetricDataSchema = z.object({\n id: z.number(),\n name: z.string(),\n unit: z.string(),\n dataType: z.string(),\n dataTypeValues: z.unknown().nullable(),\n minVal: z.number().nullable(),\n maxVal: z.number().nullable(),\n grouping: z.unknown().nullable(),\n canAddValue: z.boolean(),\n measurements: AnalysisMeasurementSchema.array(),\n result: z.unknown().nullable(),\n});\n\nexport const ProductMetricDataSchema = z.object({\n id: z.number(),\n name: z.string(),\n nextURL: z.string().nullable(),\n metricDataList: AnalysisMetricDataSchema.array(),\n});\n\nexport const ProductAnalysisResponseSchema = z.object({\n productId: z.number(),\n batchCode: z.string(),\n description: z.string(),\n canAddResult: z.boolean(),\n productMetricDataList: ProductMetricDataSchema.array(),\n});\n\nexport const ProductAnalysisParamsSchema = z.object({\n startDate: z.string().optional(),\n endDate: z.string().optional(),\n metricId: z.number().optional(),\n weighting: z.number().optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Product Composition\n// ---------------------------------------------------------------------------\n\nexport const CompositionComponentSchema = z.object({\n productId: z.number().optional(),\n batchCode: z.string().optional(),\n description: z.string().optional(),\n vintage: z.string().nullable().optional(),\n variety: z.string().nullable().optional(),\n region: z.string().nullable().optional(),\n percentage: z.number().optional(),\n volume: VolumeSchema.optional(),\n});\n\nexport const ProductCompositionResponseSchema = z.object({\n productId: z.number().optional(),\n batchCode: z.string().optional(),\n description: z.string().optional(),\n components: CompositionComponentSchema.array().optional(),\n});\n\nexport type WorkOrder = z.infer<typeof WorkOrderSchema>;\nexport type GetWorkOrdersSuccessResponse = z.infer<typeof GetWorkOrdersSuccessResponseSchema>;\nexport type Product = z.infer<typeof ProductSchema>;\nexport type ProductResponse = z.infer<typeof ProductResponseSchema>;\nexport type ProductListResponse = z.infer<typeof ProductListResponseSchema>;\nexport type ProductUpdateResponse = z.infer<typeof ProductUpdateResponseSchema>;\nexport type SalesOrder = z.infer<typeof SalesOrderSchema>;\nexport type SalesOrderResponse = z.infer<typeof SalesOrderResponseSchema>;\nexport type SalesOrderUpdateResponse = z.infer<typeof SalesOrderUpdateResponseSchema>;\nexport type Refund = z.infer<typeof RefundSchema>;\nexport type RefundResponse = z.infer<typeof RefundResponseSchema>;\nexport type RefundUpdateResponse = z.infer<typeof RefundUpdateResponseSchema>;\nexport type Party = z.infer<typeof PartySchema>;\nexport type PartyResponse = z.infer<typeof PartyResponseSchema>;\nexport type WorkOrderDetail = z.infer<typeof WorkOrderDetailSchema>;\nexport type WorkOrderSearchResponse = z.infer<typeof WorkOrderSearchResponseSchema>;\nexport type AssignWorkResponse = z.infer<typeof AssignWorkResponseSchema>;\nexport type SubmitWorkOrderStepsResponse = z.infer<typeof SubmitWorkOrderStepsResponseSchema>;\nexport type PartyUpdateResponse = z.infer<typeof PartyUpdateResponseSchema>;\nexport type ProductUpdateData = z.infer<typeof ProductUpdateDataSchema>;\nexport type TransactionSearchParams = z.infer<typeof TransactionSearchParamsSchema>;\nexport type IntakeOperationSearchParams = z.infer<typeof IntakeOperationSearchParamsSchema>;\nexport type SampleOperationSearchParams = z.infer<typeof SampleOperationSearchParamsSchema>;\nexport type InventoryListParams = z.infer<typeof InventoryListParamsSchema>;\nexport type SearchListParams = z.infer<typeof SearchListParamsSchema>;\nexport type MrpStockHistoryParams = z.infer<typeof MrpStockHistoryParamsSchema>;\nexport type MrpStockNotesParams = z.infer<typeof MrpStockNotesParamsSchema>;\nexport type RateOfChange = z.infer<typeof RateOfChangeSchema>;\nexport type AnalysisMeasurement = z.infer<typeof AnalysisMeasurementSchema>;\nexport type AnalysisMetricData = z.infer<typeof AnalysisMetricDataSchema>;\nexport type ProductMetricData = z.infer<typeof ProductMetricDataSchema>;\nexport type ProductAnalysisResponse = z.infer<typeof ProductAnalysisResponseSchema>;\nexport type ProductAnalysisParams = z.infer<typeof ProductAnalysisParamsSchema>;\nexport type CompositionComponent = z.infer<typeof CompositionComponentSchema>;\nexport type ProductCompositionResponse = z.infer<typeof ProductCompositionResponseSchema>;\nexport type SalesOrderWrite = z.infer<typeof SalesOrderWriteSchema>;\nexport type RefundWrite = z.infer<typeof RefundWriteSchema>;\nexport type PartyWrite = z.infer<typeof PartyWriteSchema>;\n\n// ---------------------------------------------------------------------------\n// Generic Paginated Response Schemas (v7 style)\n// ---------------------------------------------------------------------------\n\nexport const PaginatedResponseSchema = <T extends z.ZodType>(itemSchema: T) =>\n z.object({\n totalResults: z.number().optional(),\n offset: z.number().optional(),\n limit: z.number().optional(),\n first: z.string().nullable().optional(),\n previous: z.string().nullable().optional(),\n next: z.string().nullable().optional(),\n last: z.string().nullable().optional(),\n results: z.array(itemSchema).optional(),\n });\n\nexport const VineyardIdentifiableEntitySchema = IdentifiableEntitySchema.extend({\n name: z.string(),\n grower: ExtIdentifiableEntitySchema,\n});\n\nexport const GradingSchema = z.object({\n id: z.number().optional(),\n value: z.string().optional(),\n scaleName: z.string().optional(),\n scaleId: z.number().optional(),\n});\n\nexport const BulkStockSchema = z.object({\n totalVolume: VolumeSchema.optional(),\n equivalentVolume: VolumeSchema.optional(),\n equivalentWeight: VolumeSchema.optional(),\n compWeighting: z.number().optional(),\n percentageOfFruit: z.number().optional(),\n batchId: z.number().optional(),\n batchName: z.string().optional(),\n grading: GradingSchema.nullable().optional(),\n});\n\nexport const FruitPlacementSchema = z.object({\n vintage: z.string().optional(),\n bulkStocks: z.array(BulkStockSchema).optional(),\n});\n\nexport const BlockDataSchema = z.object({\n id: z.number(),\n code: z.string().optional(),\n name: z.string(),\n extId: z.string().optional(),\n inactive: z.boolean().optional(),\n description: z.string().optional(),\n rowNumbers: z.string().optional(),\n estate: z.boolean().optional(),\n grower: ExtIdentifiableEntitySchema.optional(),\n vineyard: VineyardIdentifiableEntitySchema.optional(),\n region: IdentifiableEntitySchema.optional(),\n subRegion: IdentifiableEntitySchema.optional(),\n variety: IdentifiableEntitySchema.optional(),\n intendedUse: IdentifiableEntitySchema.optional(),\n grading: GradingSchema.nullable().optional(),\n fruitPlacement: FruitPlacementSchema.optional(),\n});\n\nexport const GetBlocksSuccessResponseSchema = PaginatedResponseSchema(BlockDataSchema);\n\nexport const BlockSchema = ExtIdentifiableEntitySchema.extend({\n extId: z.string(),\n name: z.string(),\n estate: z.boolean().optional(),\n vineyard: VineyardIdentifiableEntitySchema,\n variety: IdentifiableEntitySchema,\n countyCode: z.string().optional(),\n inactive: z.boolean().optional(),\n noOfVines: z.number().optional(),\n area: z.number().optional(),\n rootStock: IdentifiableEntitySchema.optional(),\n clone: IdentifiableEntitySchema.optional(),\n vineSpacing: z.string().optional(),\n rowSpacing: z.string().optional(),\n soilProfile: z.string().optional(),\n trellis: IdentifiableEntitySchema.optional(),\n aspect: z.string().optional(),\n plantedTime: z.number().optional(),\n pruningType: z.string().optional(),\n averageGradient: z.number().optional(),\n irrigationType: z.string().optional(),\n frostProtection: z.string().optional(),\n organic: z.boolean().optional(),\n organicCertifiedTime: z.number().optional(),\n township: z.string().optional(),\n range: z.string().optional(),\n section: z.string().optional(),\n emitterRate: z.number().optional(),\n emitterSize: z.string().optional(),\n siteId: z.string().optional(),\n noOfRows: z.number().optional(),\n districtCode: z.string().optional(),\n regionalAdminCode: z.string().optional(),\n comments: z.string().optional(),\n code: z.string().optional(),\n defaultHarvestMethod: z.string().optional(),\n description: z.string().optional(),\n graftedDate: z.number().optional(),\n intendedUse: IdentifiableEntitySchema.optional(),\n rowNumbers: z.string().optional(),\n vineStructure: IdentifiableEntitySchema.optional(),\n});\n\nexport const BlockResponseSchema = z.object({\n data: BlockSchema,\n});\n\n// ---------------------------------------------------------------------------\n// v6-style paginated responses: totalResultCount + first/max params\n// ---------------------------------------------------------------------------\n\nexport const V6PaginatedResponseSchema = z.object({\n totalResultCount: z.number().optional(),\n firstResult: z.number().optional(),\n maxResult: z.number().optional(),\n nextURLPath: z.string().nullable().optional(),\n prevURLPath: z.string().nullable().optional(),\n results: z.array(z.unknown()).optional(),\n});\n\nexport const InventoryResponseSchema = V6PaginatedResponseSchema;\nexport const TransactionSearchResponseSchema = V6PaginatedResponseSchema;\nexport const IntakeOperationSearchResponseSchema = V6PaginatedResponseSchema;\nexport const SampleOperationSearchResponseSchema = z.object({\n status: z.string().optional(),\n message: z.string().nullable().optional(),\n resultCount: z.number().nullable().optional(),\n resultLimit: z.number().optional(),\n nextResult: z.number().nullable().optional(),\n samples: z.array(z.unknown()).optional(),\n});\nexport const SearchListResponseSchema = V6PaginatedResponseSchema;\n\n// ---------------------------------------------------------------------------\n// Type exports for new schemas\n// ---------------------------------------------------------------------------\n\nexport type GetBlocksSuccessResponse = z.infer<typeof GetBlocksSuccessResponseSchema>;\nexport type BlockData = z.infer<typeof BlockDataSchema>;\nexport type Block = z.infer<typeof BlockSchema>;\nexport type BlockResponse = z.infer<typeof BlockResponseSchema>;\nexport type VineyardIdentifiableEntity = z.infer<typeof VineyardIdentifiableEntitySchema>;\nexport type Grading = z.infer<typeof GradingSchema>;\nexport type BulkStock = z.infer<typeof BulkStockSchema>;\nexport type FruitPlacement = z.infer<typeof FruitPlacementSchema>;\nexport type InventoryResponse = z.infer<typeof InventoryResponseSchema>;\nexport type TransactionSearchResponse = z.infer<typeof TransactionSearchResponseSchema>;\nexport type IntakeOperationSearchResponse = z.infer<typeof IntakeOperationSearchResponseSchema>;\nexport type SampleOperationSearchResponse = z.infer<typeof SampleOperationSearchResponseSchema>;\nexport type SearchListResponse = z.infer<typeof SearchListResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Vessel Details Report\n// ---------------------------------------------------------------------------\n\nconst MeasurementSchema = z.object({\n value: z.number().optional(),\n unit: z.string().optional(),\n});\n\nconst WinerySchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n businessUnit: z.string().optional(),\n});\n\nconst VesselGradingSchema = z.object({\n scaleId: z.number().optional(),\n scaleName: z.string().optional(),\n valueId: z.number().optional(),\n valueName: z.string().optional(),\n});\n\nconst WineBatchDetailsSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n description: z.string().optional(),\n vintage: z.string().optional(),\n designatedRegion: CodedIdentifiableEntitySchema.optional(),\n designatedSubRegion: CodedIdentifiableEntitySchema.optional(),\n designatedVariety: CodedIdentifiableEntitySchema.optional(),\n program: z.string().optional(),\n productCategory: CodedIdentifiableEntitySchema.optional(),\n designatedProduct: CodedIdentifiableEntitySchema.optional(),\n grading: VesselGradingSchema.optional(),\n});\n\nconst ProductStateSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n expectedLossesPercentage: z.number().optional(),\n});\n\nconst TaxDetailsSchema = z.object({\n bond: IdentifiableEntitySchema.optional(),\n name: z.string().optional(),\n taxState: z.string().optional(),\n taxClass: IdentifiableEntitySchema.optional(),\n federalName: z.string().optional(),\n stateName: z.string().optional(),\n});\n\nconst AllocationSliceSchema = z.object({\n product: CodedIdentifiableEntitySchema.optional(),\n vintage: z.string().optional(),\n itemCode: z.string().optional(),\n allocationVolume: MeasurementSchema.optional(),\n allocationPercentageOfVessel: z.number().optional(),\n});\n\nconst CompositionSliceSchema = z.object({\n vintage: z.string().optional(),\n variety: CodedIdentifiableEntitySchema.optional(),\n region: CodedIdentifiableEntitySchema.optional(),\n subRegion: CodedIdentifiableEntitySchema.optional(),\n weighting: z.number().optional(),\n percentage: z.number().optional(),\n componentVolume: MeasurementSchema.optional(),\n});\n\nconst CostBreakdownSchema = z.object({\n total: z.number().optional(),\n fruit: z.number().optional(),\n overhead: z.number().optional(),\n storage: z.number().optional(),\n additive: z.number().optional(),\n bulk: z.number().optional(),\n packaging: z.number().optional(),\n operation: z.number().optional(),\n freight: z.number().optional(),\n other: z.number().optional(),\n});\n\nconst LiveMetricSchema = z.object({\n name: z.string().optional(),\n value: z.number().optional(),\n interfaceMappedName: z.string().optional(),\n});\n\nexport const AnalysisResultSchema = z.object({\n name: z.string(),\n value: z.number().nullable().optional(),\n interfaceMappedName: z.string().nullable().optional(),\n nonNumericValue: z.string().nullable().optional(),\n});\n\nexport type AnalysisResult = z.infer<typeof AnalysisResultSchema>;\n\nconst SparklingInfoSchema = z.object({\n state: z.string().optional(),\n});\n\nexport const BulkWineDetailsSchema = z.object({\n id: z.number().optional(),\n productId: z.number().optional(),\n name: z.string().optional(),\n description: z.string().optional(),\n vesselType: z.string().optional(),\n detailsAsAt: z.number().optional(),\n sparklingInfo: SparklingInfoSchema.optional(),\n beverageType: IdentifiableEntitySchema.optional(),\n owner: ExtIdentifiableEntitySchema.optional(),\n winery: WinerySchema.optional(),\n wineBatch: WineBatchDetailsSchema.optional(),\n productState: ProductStateSchema.optional(),\n volume: MeasurementSchema.optional(),\n capacity: MeasurementSchema.optional(),\n ullage: MeasurementSchema.optional(),\n ttbDetails: TaxDetailsSchema.optional(),\n liveMetrics: z.array(LiveMetricSchema).optional(),\n cost: CostBreakdownSchema.optional(),\n composition: z.array(CompositionSliceSchema).optional(),\n allocations: z.array(AllocationSliceSchema).optional(),\n unallocatedVolume: MeasurementSchema.optional(),\n unallocatedPercentageOfVessel: z.number().optional(),\n});\n\nexport const GetBulkWineDetailsReportResponseSchema = z.object({\n totalResults: z.number().optional(),\n offset: z.number().optional(),\n limit: z.number().optional(),\n first: z.string().nullable().optional(),\n previous: z.string().nullable().optional(),\n next: z.string().nullable().optional(),\n last: z.string().nullable().optional(),\n results: z.array(BulkWineDetailsSchema).optional(),\n});\n\nexport type BulkWineDetails = z.infer<typeof BulkWineDetailsSchema>;\nexport type GetBulkWineDetailsReportResponse = z.infer<\n typeof GetBulkWineDetailsReportResponseSchema\n>;\nexport type V6PaginatedResponse = z.infer<typeof V6PaginatedResponseSchema>;\n\nexport const ProductJobAttachmentSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n url: z.string().optional(),\n});\n\nexport const ProductJobSchema = z.object({\n operationId: z.number(),\n processId: z.number(),\n operatorName: z.string().optional(),\n completedDate: z.number().optional(),\n completedDateText: z.string().optional(),\n summary: z.string().optional(),\n operationName: z.string().optional(),\n workOrderNumber: z.string().nullable().optional(),\n reversible: z.boolean().optional(),\n attachments: ProductJobAttachmentSchema.array().optional(),\n});\n\nexport const ProductJobDetailsSchema = z.object({\n productId: z.number(),\n batchId: z.number().optional(),\n vesselId: z.number().optional(),\n batchCode: z.string().nullable().optional(),\n vesselCode: z.string().nullable().optional(),\n canReverseJobs: z.boolean().optional(),\n jobs: ProductJobSchema.array().optional(),\n});\n\nexport const ProductJobResponseSchema = z.object({\n status: z.string(),\n message: z.string().nullable().optional(),\n jobDetails: ProductJobDetailsSchema,\n});\n\nexport type ProductJobAttachment = z.infer<typeof ProductJobAttachmentSchema>;\nexport type ProductJob = z.infer<typeof ProductJobSchema>;\nexport type ProductJobDetails = z.infer<typeof ProductJobDetailsSchema>;\nexport type ProductJobResponse = z.infer<typeof ProductJobResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Costs - Business Unit Transactions\n// ---------------------------------------------------------------------------\n\nexport const TransactionDetailsSchema = z.object({\n activityDate: z.number().optional(),\n postedDate: z.number().optional(),\n resultOfCorrection: z.boolean().optional(),\n activityId: z.string().optional(),\n postedId: z.number().optional(),\n activityType: z.string().optional(),\n activitySummary: z.string().optional(),\n primaryCostTarget: z.string().optional(),\n secondaryCostTarget: z.string().optional(),\n primaryWinery: WinerySchema.optional(),\n secondaryWinery: WinerySchema.optional(),\n location: z.string().optional(),\n vessel: z.string().optional(),\n wineBatch: z.string().optional(),\n productCategory: CodedIdentifiableEntitySchema.optional(),\n program: CodedIdentifiableEntitySchema.optional(),\n volumeDelta: MeasurementSchema.optional(),\n costDelta: CostBreakdownSchema.optional(),\n otherWinery: WinerySchema.optional(),\n notes: z.string().optional(),\n customer: ExtIdentifiableEntitySchema.optional(),\n vendor: ExtIdentifiableEntitySchema.optional(),\n lossReason: IdentifiableEntitySchema.optional(),\n allocationDescription: z.string().optional(),\n impactedAllocations: z\n .array(\n z.object({\n productName: z.string().optional(),\n vintage: z.string().optional(),\n itemCode: z.string().optional(),\n name: z.string().optional(),\n })\n )\n .optional(),\n references: z\n .object({\n bulkSalesOrder: z.string().optional(),\n bulkPurchaseOrder: z.string().optional(),\n externalWorkOrder: z.string().optional(),\n workOrder: z.string().optional(),\n jobNUmber: z.string().optional(),\n billOfLadingNumber: z.string().optional(),\n })\n .optional(),\n});\n\nexport const GetBusinessUnitTransactionsResponseSchema =\n PaginatedResponseSchema(TransactionDetailsSchema);\n\nexport type TransactionDetails = z.infer<typeof TransactionDetailsSchema>;\nexport type GetBusinessUnitTransactionsResponse = z.infer<\n typeof GetBusinessUnitTransactionsResponseSchema\n>;\n\n// ---------------------------------------------------------------------------\n// Block Assessments\n// ---------------------------------------------------------------------------\n\nexport const BlockAssessmentOverviewSchema = z.object({\n id: z.number().optional(),\n blockId: z.number().optional(),\n assessmentDate: z.number().optional(),\n assessmentDateAsText: z.string().optional(),\n vintage: z.string().optional(),\n grade: z.string().optional(),\n score: z.number().optional(),\n brix: z.number().optional(),\n ph: z.number().optional(),\n ta: z.number().optional(),\n ba: z.number().optional(),\n principalMethod: z.string().optional(),\n secondaryMethod: z.string().optional(),\n clone: z.string().optional(),\n region: z.string().optional(),\n subRegion: z.string().optional(),\n vineyard: z.string().optional(),\n blockCode: z.string().optional(),\n blockName: z.string().optional(),\n variety: z.string().optional(),\n});\n\nexport const GetAssessmentsResponseSchema = PaginatedResponseSchema(BlockAssessmentOverviewSchema);\n\nexport type BlockAssessmentOverview = z.infer<typeof BlockAssessmentOverviewSchema>;\nexport type GetAssessmentsResponse = z.infer<typeof GetAssessmentsResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Vineyards\n// ---------------------------------------------------------------------------\n\nexport const VineyardSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n grower: ExtIdentifiableEntitySchema.optional(),\n});\n\nexport const VineyardResponseSchema = z.object({\n data: VineyardSchema.optional(),\n});\n\nexport type Vineyard = z.infer<typeof VineyardSchema>;\nexport type VineyardResponse = z.infer<typeof VineyardResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Maturity Samples\n// ---------------------------------------------------------------------------\n\nexport const MaturitySampleSchema = z.object({\n id: z.number().optional(),\n sampleDate: z.number().optional(),\n sampleDateAsText: z.string().optional(),\n vineyard: z.string().optional(),\n block: z.string().optional(),\n varietal: z.string().optional(),\n vintage: z.string().optional(),\n brix: z.number().optional(),\n ph: z.number().optional(),\n ta: z.number().optional(),\n grade: z.string().optional(),\n});\n\nexport const MaturitySampleResponseSchema = z.object({\n data: MaturitySampleSchema.optional(),\n});\n\nexport type MaturitySample = z.infer<typeof MaturitySampleSchema>;\nexport type MaturitySampleResponse = z.infer<typeof MaturitySampleResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Parties (v7 /identity/parties)\n// ---------------------------------------------------------------------------\n\nexport const PartyV7Schema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n primeName: z.string().optional(),\n givenName: z.string().nullable(),\n phone: z.string().nullable(),\n email: z.string().nullable(),\n isOrganization: z.boolean().optional(),\n address: AddressSchema.optional(),\n});\n\nexport const GetPartiesV7ResponseSchema = PaginatedResponseSchema(PartyV7Schema);\n\nexport type PartyV7 = z.infer<typeof PartyV7Schema>;\nexport type GetPartiesV7Response = z.infer<typeof GetPartiesV7ResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Shipments\n// ---------------------------------------------------------------------------\n\nexport const ShipmentDestinationSchema = z.object({\n name: z.string().optional(),\n address: AddressSchema.optional(),\n});\n\nexport const ShipmentWineDetailsSchema = z.object({\n productId: z.number().optional(),\n productName: z.string().optional(),\n quantity: z.number().optional(),\n volume: MeasurementSchema.optional(),\n});\n\nexport const ShipmentDataSchema = z.object({\n id: z.number().optional(),\n code: z.string().optional(),\n shipmentDate: z.number().optional(),\n shipmentDateAsText: z.string().optional(),\n status: z.string().optional(),\n destination: ShipmentDestinationSchema.optional(),\n wineDetails: ShipmentWineDetailsSchema.array().optional(),\n});\n\nexport const GetShipmentsSuccessResponseSchema = PaginatedResponseSchema(ShipmentDataSchema);\n\nexport type ShipmentDestination = z.infer<typeof ShipmentDestinationSchema>;\nexport type ShipmentWineDetails = z.infer<typeof ShipmentWineDetailsSchema>;\nexport type ShipmentData = z.infer<typeof ShipmentDataSchema>;\nexport type GetShipmentsSuccessResponse = z.infer<typeof GetShipmentsSuccessResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Barrel Treatments\n// ---------------------------------------------------------------------------\n\nexport const BarrelTreatmentTypeSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n code: z.string().optional(),\n});\n\nexport const ShipmentBarrelDetailsSchema = z.object({\n barcode: z.string().optional(),\n vendorBarcode: z.string().optional(),\n quantity: z.number().optional(),\n});\n\nexport const BarrelTreatmentDataSchema = z.object({\n id: z.number().optional(),\n treatmentDate: z.number().optional(),\n treatmentDateAsText: z.string().optional(),\n treatment: BarrelTreatmentTypeSchema.optional(),\n barrels: ShipmentBarrelDetailsSchema.array().optional(),\n});\n\nexport const GetBarrelTreatmentsSuccessResponseSchema =\n PaginatedResponseSchema(BarrelTreatmentDataSchema);\n\nexport type BarrelTreatmentType = z.infer<typeof BarrelTreatmentTypeSchema>;\nexport type ShipmentBarrelDetails = z.infer<typeof ShipmentBarrelDetailsSchema>;\nexport type BarrelTreatmentData = z.infer<typeof BarrelTreatmentDataSchema>;\nexport type GetBarrelTreatmentsSuccessResponse = z.infer<\n typeof GetBarrelTreatmentsSuccessResponseSchema\n>;\n\n// ---------------------------------------------------------------------------\n// Fruit Intakes\n// ---------------------------------------------------------------------------\n\nexport const FruitIntakeSchema = z.object({\n id: z.number().optional(),\n intakeDate: z.number().optional(),\n intakeDateAsText: z.string().optional(),\n deliveryDocket: z.string().optional(),\n intakeDocket: z.string().optional(),\n brix: z.number().optional(),\n ph: z.number().optional(),\n ta: z.number().optional(),\n weight: MeasurementSchema.optional(),\n volume: MeasurementSchema.optional(),\n block: z.string().optional(),\n vineyard: z.string().optional(),\n varietal: z.string().optional(),\n vintage: z.string().optional(),\n grower: z.string().optional(),\n owner: z.string().optional(),\n status: z.string().optional(),\n});\n\nexport const FruitIntakeRequestSchema = FruitIntakeSchema.partial();\n\nexport const CreateFruitIntakeSuccessResponseSchema = z.object({\n data: FruitIntakeSchema.optional(),\n});\n\nexport const UpdateFruitIntakePricingSchema = z.object({\n gross: MeasurementSchema.optional(),\n tare: MeasurementSchema.optional(),\n net: MeasurementSchema.optional(),\n unitPrice: MeasurementSchema.optional(),\n});\n\nexport const UpdateFruitIntakePricingResponseSchema = z.object({\n data: UpdateFruitIntakePricingSchema.optional(),\n});\n\nexport type FruitIntake = z.infer<typeof FruitIntakeSchema>;\nexport type FruitIntakeRequest = z.infer<typeof FruitIntakeRequestSchema>;\nexport type CreateFruitIntakeSuccessResponse = z.infer<\n typeof CreateFruitIntakeSuccessResponseSchema\n>;\nexport type UpdateFruitIntakePricing = z.infer<typeof UpdateFruitIntakePricingSchema>;\nexport type UpdateFruitIntakePricingResponse = z.infer<\n typeof UpdateFruitIntakePricingResponseSchema\n>;\n\nexport const UpdateMetricsSchema = z.object({\n metrics: z.array(AnalysisResultSchema).optional(),\n});\n\nexport const UpdateMetricsResponseSchema = z.object({\n data: UpdateMetricsSchema.optional(),\n});\n\nexport type UpdateMetrics = z.infer<typeof UpdateMetricsSchema>;\nexport type UpdateMetricsResponse = z.infer<typeof UpdateMetricsResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Bulk Intakes\n// ---------------------------------------------------------------------------\n\nexport const BulkIntakeSchema = z.object({\n id: z.number().optional(),\n code: z.string().optional(),\n intakeDate: z.number().optional(),\n intakeDateAsText: z.string().optional(),\n supplier: z.string().optional(),\n vintage: z.string().optional(),\n varietal: z.string().optional(),\n volume: MeasurementSchema.optional(),\n status: z.string().optional(),\n});\n\nexport const GetBulkIntakesSuccessResponseSchema = PaginatedResponseSchema(BulkIntakeSchema);\n\nexport type BulkIntake = z.infer<typeof BulkIntakeSchema>;\nexport type GetBulkIntakesSuccessResponse = z.infer<typeof GetBulkIntakesSuccessResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Trial Blends\n// ---------------------------------------------------------------------------\n\nexport const TrialBlendSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n status: z.string().optional(),\n createdDate: z.number().optional(),\n createdDateAsText: z.string().optional(),\n targetVolume: MeasurementSchema.optional(),\n actualVolume: MeasurementSchema.optional(),\n components: z\n .array(\n z.object({\n productId: z.number().optional(),\n productName: z.string().optional(),\n percentage: z.number().optional(),\n volume: MeasurementSchema.optional(),\n })\n )\n .optional(),\n});\n\nexport const GetTrialBlendsSuccessResponseSchema = PaginatedResponseSchema(TrialBlendSchema);\n\nexport type TrialBlend = z.infer<typeof TrialBlendSchema>;\nexport type GetTrialBlendsSuccessResponse = z.infer<typeof GetTrialBlendsSuccessResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Work Orders (v7)\n// ---------------------------------------------------------------------------\n\nexport const WorkOrderV7Schema = z.object({\n id: z.number().optional(),\n code: z.string().optional(),\n name: z.string().optional(),\n status: z.string().optional(),\n scheduledDate: z.number().optional(),\n scheduledDateAsText: z.string().optional(),\n assignedTo: z.string().optional(),\n summary: z.string().optional(),\n});\n\nexport const GetWorkOrdersV7ResponseSchema = PaginatedResponseSchema(WorkOrderV7Schema);\n\nexport type WorkOrderV7 = z.infer<typeof WorkOrderV7Schema>;\nexport type GetWorkOrdersV7Response = z.infer<typeof GetWorkOrdersV7ResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Tirage\n// ---------------------------------------------------------------------------\n\nexport const TirageSourceWineDetailsSchema = z.object({\n productId: z.number().optional(),\n productName: z.string().optional(),\n volume: MeasurementSchema.optional(),\n vintage: z.string().optional(),\n});\n\nexport const TiragePackageDetailsSchema = z.object({\n packageType: z.string().optional(),\n quantity: z.number().optional(),\n volume: MeasurementSchema.optional(),\n});\n\nexport const TirageSchema = z.object({\n id: z.number().optional(),\n operationId: z.number().optional(),\n status: z.string().optional(),\n sourceWine: TirageSourceWineDetailsSchema.optional(),\n package: TiragePackageDetailsSchema.optional(),\n jobNumber: z.string().optional(),\n createdDate: z.number().optional(),\n createdDateAsText: z.string().optional(),\n});\n\nexport const TirageSuccessResponseSchema = z.object({\n data: TirageSchema.optional(),\n});\n\nexport type TirageSourceWineDetails = z.infer<typeof TirageSourceWineDetailsSchema>;\nexport type TiragePackageDetails = z.infer<typeof TiragePackageDetailsSchema>;\nexport type Tirage = z.infer<typeof TirageSchema>;\nexport type TirageSuccessResponse = z.infer<typeof TirageSuccessResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Barrels Movements\n// ---------------------------------------------------------------------------\n\nexport const BarrelsMovementSchema = z.object({\n id: z.number().optional(),\n movementDate: z.number().optional(),\n movementDateAsText: z.string().optional(),\n fromLocation: z.string().optional(),\n toLocation: z.string().optional(),\n barrels: z.array(z.string()).optional(),\n status: z.string().optional(),\n});\n\nexport const CreateBarrelsMovementRequestSchema = z.object({\n movementDate: z.number().optional(),\n fromLocation: z.string().optional(),\n toLocation: z.string().optional(),\n barrels: z.array(z.string()).optional(),\n});\n\nexport type BarrelsMovement = z.infer<typeof BarrelsMovementSchema>;\nexport type CreateBarrelsMovementRequest = z.infer<typeof CreateBarrelsMovementRequestSchema>;\n\n// ---------------------------------------------------------------------------\n// Bookings (v7)\n// ---------------------------------------------------------------------------\n\nexport const BookingStateSchema = z.enum(['Scheduled', 'Underway', 'Completed', 'Confirmed']);\n\nexport const BookingSchema = z.object({\n id: z.number().optional(),\n code: z.string().optional(),\n bookingDate: z.number().optional(),\n bookingDateAsText: z.string().optional(),\n bookingState: BookingStateSchema.optional(),\n bookingType: z.string().optional(),\n startTime: z.number().optional(),\n startTimeAsText: z.string().optional(),\n endTime: z.number().optional(),\n endTimeAsText: z.string().optional(),\n winery: WinerySchema.optional(),\n bulkBooking: z.boolean().optional(),\n lastBooking: z.boolean().optional(),\n});\n\nexport const CreateBookingSuccessResponseSchema = z.object({\n data: BookingSchema.optional(),\n});\n\nexport const BookingDeactivationResponseSchema = z.object({\n status: z.string().optional(),\n message: z.string().optional(),\n});\n\nexport type BookingState = z.infer<typeof BookingStateSchema>;\nexport type Booking = z.infer<typeof BookingSchema>;\nexport type CreateBookingSuccessResponse = z.infer<typeof CreateBookingSuccessResponseSchema>;\nexport type BookingDeactivationResponse = z.infer<typeof BookingDeactivationResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Purchase Orders\n// ---------------------------------------------------------------------------\n\nconst PurchaseOrderStateEnum = z.enum(['NEW', 'APPROVED']);\nconst FulfillmentEnum = z.enum(['NOT_FULFILLED', 'PART_FULFILLED', 'FULFILLED', 'OVER_FULFILLED']);\nconst TaxPolicyEnum = z.enum(['TAX_INCLUSIVE', 'TAX_EXCLUSIVE', 'NO_TAX']);\nconst PurchaseOrderLineTypeEnum = z.enum(['GENERAL', 'ADHOC', 'WINE_BATCH', 'STOCK']);\n\nexport const PurchaseOrderLineSchema = z.object({\n id: z.number(),\n type: PurchaseOrderLineTypeEnum,\n lineNumber: z.string().nullable().optional(),\n itemCode: z.string().nullable().optional(),\n vendorCode: z.string().nullable().optional(),\n description: z.string().nullable().optional(),\n itemName: z.string().optional(),\n unitPrice: z.number().optional(),\n totalPrice: z.number().optional(),\n taxable: z.boolean().optional(),\n quantityOrdered: MeasurementSchema.optional(),\n quantityFulfilled: MeasurementSchema.optional(),\n});\n\nexport const PurchaseOrderSchema = z.object({\n id: z.number(),\n name: z.string(),\n state: PurchaseOrderStateEnum.optional(),\n fulfillment: FulfillmentEnum.optional(),\n taxPolicy: TaxPolicyEnum.optional(),\n freightCost: z.number().nullable().optional(),\n inactive: z.boolean().optional(),\n vendor: ExtIdentifiableEntitySchema.optional(),\n vendorReference: z.string().nullable().optional(),\n deliverBy: z.number().nullable().optional(),\n notes: z.string().nullable().optional(),\n winery: z\n .object({\n id: z.number().optional(),\n name: z.string().optional(),\n businessUnit: z.string().nullable().optional(),\n })\n .optional(),\n lines: PurchaseOrderLineSchema.array().optional(),\n});\n\nexport const PurchaseOrderResponseSchema = z.object({\n data: PurchaseOrderSchema,\n});\n\nexport type PurchaseOrderLine = z.infer<typeof PurchaseOrderLineSchema>;\nexport type PurchaseOrder = z.infer<typeof PurchaseOrderSchema>;\nexport type PurchaseOrderResponse = z.infer<typeof PurchaseOrderResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Wine Batches (v7 /operation/wine-batches)\n// ---------------------------------------------------------------------------\n\nexport const FractionTypeEnum = z.enum([\n 'FREE_RUN',\n 'PRESSINGS',\n 'MUST',\n 'LEES',\n 'UNKNOWN',\n 'COMBINED',\n 'CONDENSATE',\n 'PRESSINGS_LIGHT',\n 'PRESSINGS_HEAVY',\n 'DRAININGS',\n 'PRESSINGS_OVERNIGHT',\n 'SAIGNEE',\n]);\n\nconst WineBatchVesselSchema = z.object({\n id: z.number().optional(),\n name: z.string().optional(),\n type: z\n .enum(['TANK', 'BIN', 'BARREL', 'BARREL_GROUP', 'BIN_GROUP', 'PRESS', 'TANKER'])\n .optional(),\n amount: MeasurementSchema.optional(),\n});\n\nexport const WineBatchDataSchema = z.object({\n id: z.number().optional(),\n batchCode: z.string().optional(),\n batchNumber: z.string().optional(),\n description: z.string().optional(),\n productionYear: z.number().optional(),\n owner: ExtIdentifiableEntitySchema.optional(),\n grading: VesselGradingSchema.optional(),\n program: IdentifiableEntitySchema.optional(),\n designatedRegion: IdentifiableEntitySchema.optional(),\n designatedSubRegion: IdentifiableEntitySchema.optional(),\n designatedVariety: IdentifiableEntitySchema.optional(),\n winery: WinerySchema.optional(),\n category: IdentifiableEntitySchema.optional(),\n designatedProduct: IdentifiableEntitySchema.optional(),\n costsTrackedPercentage: z.number().optional(),\n ageOfSpirits: z.string().optional(),\n serviceOrder: IdentifiableEntitySchema.optional(),\n fractionType: FractionTypeEnum.optional(),\n inactive: z.boolean().optional(),\n vessels: z.array(WineBatchVesselSchema).optional(),\n allocations: z.array(AllocationSliceSchema).optional(),\n});\n\nexport const GetWineBatchSuccessResponseSchema = PaginatedResponseSchema(WineBatchDataSchema);\n\nexport const CreateWineBatchSuccessResponseSchema = z.object({\n data: WineBatchDataSchema.optional(),\n});\n\nexport const CreateWineBatchRequestSchema = WineBatchDataSchema.extend({\n batchCode: z.string(),\n productionYear: z.number(),\n winery: WinerySchema,\n owner: ExtIdentifiableEntitySchema,\n});\n\nexport type FractionType = z.infer<typeof FractionTypeEnum>;\nexport type WineBatchData = z.infer<typeof WineBatchDataSchema>;\nexport type GetWineBatchSuccessResponse = z.infer<typeof GetWineBatchSuccessResponseSchema>;\nexport type CreateWineBatchSuccessResponse = z.infer<typeof CreateWineBatchSuccessResponseSchema>;\nexport type CreateWineBatchRequest = z.infer<typeof CreateWineBatchRequestSchema>;\n","import { VintraceClientConfig, DEFAULT_OPTIONS, VintraceClientOptions } from './config';\nimport { vintraceFetch, RequestOptions } from '../http/fetch';\nimport { paginate, PaginatedResponse } from '../http/pagination';\nimport { VintraceResult } from '../types/result';\nimport { VintraceError, VintraceAggregateError } from './errors';\nimport { batchFetch } from './utils';\nimport type {\n WorkOrderSearchResponse,\n WorkOrderDetail,\n AssignWorkResponse,\n SubmitWorkOrderStepsResponse,\n SalesOrder,\n SalesOrderResponse,\n SalesOrderUpdateResponse,\n Refund,\n RefundResponse,\n RefundUpdateResponse,\n Party,\n PartyResponse,\n PartyUpdateResponse,\n ProductListResponse,\n ProductResponse,\n ProductUpdateResponse,\n ProductUpdateData,\n Product,\n ProductAnalysisResponse,\n ProductAnalysisParams,\n ProductCompositionResponse,\n GetBlocksSuccessResponse,\n InventoryResponse,\n InventoryListParams,\n TransactionSearchResponse,\n TransactionSearchParams,\n IntakeOperationSearchResponse,\n IntakeOperationSearchParams,\n SampleOperationSearchResponse,\n SampleOperationSearchParams,\n SearchListResponse,\n SearchListParams,\n MrpStockHistoryParams,\n MrpStockNotesParams,\n BulkWineDetails,\n GetBulkWineDetailsReportResponse,\n ProductJobResponse,\n GetBusinessUnitTransactionsResponse,\n CreateFruitIntakeSuccessResponse,\n UpdateFruitIntakePricing,\n UpdateFruitIntakePricingResponse,\n UpdateMetrics,\n UpdateMetricsResponse,\n TirageSuccessResponse,\n BarrelsMovement,\n BlockData,\n Block,\n BlockResponse,\n TransactionDetails,\n PurchaseOrder,\n PurchaseOrderResponse,\n WineBatchData,\n GetWineBatchSuccessResponse,\n CreateWineBatchSuccessResponse,\n CreateWineBatchRequest,\n} from '../validation/schemas';\nimport {\n WorkOrderSearchResponseSchema,\n WorkOrderDetailSchema,\n AssignWorkResponseSchema,\n AssignWorkDataSchema,\n SubmitWorkOrderStepsResponseSchema,\n SubmitJobRequestSchema,\n SalesOrderSchema,\n SalesOrderWriteSchema,\n SalesOrderResponseSchema,\n SalesOrderUpdateResponseSchema,\n RefundSchema,\n RefundWriteSchema,\n RefundResponseSchema,\n RefundUpdateResponseSchema,\n PartySchema,\n PartyWriteSchema,\n PartyResponseSchema,\n PartyUpdateResponseSchema,\n ProductListResponseSchema,\n ProductResponseSchema,\n ProductUpdateResponseSchema,\n ProductUpdateDataSchema,\n ProductSchema,\n ProductAnalysisResponseSchema,\n ProductCompositionResponseSchema,\n GetBlocksSuccessResponseSchema,\n InventoryResponseSchema,\n TransactionSearchResponseSchema,\n IntakeOperationSearchResponseSchema,\n SampleOperationSearchResponseSchema,\n SearchListResponseSchema,\n GetBulkWineDetailsReportResponseSchema,\n ProductJobResponseSchema,\n GetBusinessUnitTransactionsResponseSchema,\n CreateFruitIntakeSuccessResponseSchema,\n UpdateFruitIntakePricingSchema,\n UpdateFruitIntakePricingResponseSchema,\n UpdateMetricsSchema,\n UpdateMetricsResponseSchema,\n TirageSuccessResponseSchema,\n CreateBarrelsMovementRequestSchema,\n FruitIntakeRequestSchema,\n PurchaseOrderResponseSchema,\n BlockResponseSchema,\n GetWineBatchSuccessResponseSchema,\n CreateWineBatchSuccessResponseSchema,\n CreateWineBatchRequestSchema,\n} from '../validation/schemas';\n\nexport interface WorkOrderListParams {\n /**\n * Filter work orders starting from this date (ISO yyyy-MM-dd).\n * Example: `2024-01-01`\n */\n max?: string;\n first?: string;\n startsWith?: string;\n assignedTo?: 'AVAILABLE_TO_ME' | 'ANYONE' | 'MINE_ONLY' | 'UNASSIGNED';\n workOrderState?: 'ANY' | 'IN_PROGRESS' | 'NOT_STARTED' | 'SUBMITTED' | 'INCOMPLETE';\n fromDate?: string;\n toDate?: string;\n countOnly?: boolean;\n wineryId?: number;\n}\n\nexport interface SalesOrderListParams {\n /**\n * startDate and endDate filter the sales orders by date (ISO yyyy-MM-dd).\n * Example: `2024-01-01`\n */\n max?: string;\n first?: string;\n startsWith?: string;\n status?: string;\n customerName?: string;\n startDate?: string;\n endDate?: string;\n invStartDate?: string;\n invEndDate?: string;\n externalTransactionId?: string;\n}\n\nexport interface RefundListParams {\n /**\n * startDate and endDate filter refunds by date (ISO yyyy-MM-dd).\n * Example: `2024-01-01`\n */\n max?: string;\n first?: string;\n startsWith?: string;\n status?: string;\n customerName?: string;\n startDate?: string;\n endDate?: string;\n salesOrderName?: string;\n}\n\nexport interface PartyListParams {\n max?: string;\n first?: string;\n startsWith?: string;\n category?: 'All' | 'Individuals' | 'Organisations';\n}\n\nexport interface ProductListParams {\n max?: string;\n first?: string;\n startsWith?: string;\n}\n\nexport interface VesselDetailsReportParams {\n limit?: number;\n offset?: number;\n /**\n * asAtDate is the report date expressed as epoch milliseconds.\n * Example: `1704067200000` (represents 2024-01-01T00:00:00.000Z)\n */\n asAtDate?: number;\n businessUnit?: string;\n batch?: string;\n vessel?: string;\n owner?: string;\n extraFields?: string;\n vesselId?: number;\n productId?: number;\n wineryId?: number;\n wineryName?: string;\n vesselType?: 'TANK' | 'BIN' | 'BARREL' | 'BARREL_GROUP' | 'BIN_GROUP' | 'PRESS' | 'TANKER';\n}\n\nexport interface BlocksListParams {\n include?: string;\n vintage?: string;\n VintraceEntityIds?: string;\n limit?: number;\n offset?: number;\n}\n\nexport class VintraceClient {\n /**\n * The base URL of the Vintrace API.\n */\n public readonly baseUrl: string;\n /**\n * The organization identifier.\n */\n public readonly organization: string;\n /**\n * The API token for authentication.\n */\n public readonly token: string;\n /**\n * Client options with default values applied.\n */\n public readonly options: Required<VintraceClientOptions>;\n\n /**\n * v6 API endpoints.\n */\n public readonly v6: VintraceV6Api;\n /**\n * v7 API endpoints.\n */\n public readonly v7: VintraceV7Api;\n\n /**\n * Creates a new VintraceClient instance.\n *\n * @param config - The client configuration containing baseUrl, organization, and token.\n */\n constructor(config: VintraceClientConfig) {\n this.baseUrl = config.baseUrl;\n this.organization = config.organization;\n this.token = config.token;\n this.options = { ...DEFAULT_OPTIONS, ...config.options };\n\n this.v6 = new VintraceV6Api(this);\n this.v7 = new VintraceV7Api(this);\n }\n\n /**\n * Makes a request to the Vintrace API.\n *\n * @param endpoint - The API endpoint path (e.g., 'v6/workorders/list')\n * @param method - The HTTP method (GET, POST, PUT, PATCH, DELETE)\n * @param options - Request options including timeout, maxRetries, and validation settings\n * @param body - Optional request body for POST, PUT, PATCH requests\n * @returns A promise that resolves to a VintraceResult tuple [data, error]\n */\n public request<T>(\n endpoint: string,\n method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE',\n options?: RequestOptions,\n body?: unknown\n ): Promise<VintraceResult<T>> {\n return vintraceFetch<T>(\n this.baseUrl,\n this.organization,\n this.token,\n endpoint,\n method,\n {\n timeout: options?.timeout ?? this.options.timeout,\n maxRetries: options?.maxRetries ?? this.options.maxRetries,\n validateRequest: options?.validateRequest ?? this.options.validateRequests,\n validateResponse: options?.validateResponse ?? this.options.validateResponses,\n responseSchema: options?.responseSchema,\n requestSchema: options?.requestSchema,\n },\n body\n );\n }\n}\n\nclass VintraceV6Api {\n private _workOrders?: WorkOrdersClient;\n private _salesOrders?: SalesOrdersClient;\n private _refunds?: RefundsClient;\n private _parties?: PartiesClient;\n private _products?: ProductsClient;\n private _transactions?: TransactionsClient;\n private _intakeOperations?: IntakeOperationsClient;\n private _sampleOperations?: SampleOperationsClient;\n private _blockAssessments?: BlockAssessmentsClient;\n private _mrpStock?: MrpStockClient;\n private _inventory?: InventoryClient;\n private _search?: SearchClient;\n private _productAnalysis?: ProductAnalysisClient;\n private _productComposition?: ProductCompositionClient;\n private _productJobs?: ProductJobsClient;\n\n constructor(private client: VintraceClient) {}\n\n get workOrders(): WorkOrdersClient {\n return (this._workOrders ??= new WorkOrdersClient(this.client));\n }\n\n get salesOrders(): SalesOrdersClient {\n return (this._salesOrders ??= new SalesOrdersClient(this.client));\n }\n\n get refunds(): RefundsClient {\n return (this._refunds ??= new RefundsClient(this.client));\n }\n\n get parties(): PartiesClient {\n return (this._parties ??= new PartiesClient(this.client));\n }\n\n get products(): ProductsClient {\n return (this._products ??= new ProductsClient(this.client));\n }\n\n get transactions(): TransactionsClient {\n return (this._transactions ??= new TransactionsClient(this.client));\n }\n\n get intakeOperations(): IntakeOperationsClient {\n return (this._intakeOperations ??= new IntakeOperationsClient(this.client));\n }\n\n get sampleOperations(): SampleOperationsClient {\n return (this._sampleOperations ??= new SampleOperationsClient(this.client));\n }\n\n get blockAssessments(): BlockAssessmentsClient {\n return (this._blockAssessments ??= new BlockAssessmentsClient(this.client));\n }\n\n get mrpStock(): MrpStockClient {\n return (this._mrpStock ??= new MrpStockClient(this.client));\n }\n\n get inventory(): InventoryClient {\n return (this._inventory ??= new InventoryClient(this.client));\n }\n\n get search(): SearchClient {\n return (this._search ??= new SearchClient(this.client));\n }\n\n get productAnalysis(): ProductAnalysisClient {\n return (this._productAnalysis ??= new ProductAnalysisClient(this.client));\n }\n\n get productComposition(): ProductCompositionClient {\n return (this._productComposition ??= new ProductCompositionClient(this.client));\n }\n\n get productJobs(): ProductJobsClient {\n return (this._productJobs ??= new ProductJobsClient(this.client));\n }\n}\n\nclass VintraceV7Api {\n private _costs?: CostsClient;\n private _blocks?: BlocksClient;\n private _bookings?: BookingsClient;\n private _fruitIntakes?: FruitIntakesClient;\n private _tirage?: TirageClient;\n private _barrelsMovements?: BarrelsMovementsClient;\n private _vesselDetailsReport?: VesselDetailsReportClient;\n private _wineBatches?: WineBatchesClient;\n private _documents?: DocumentsClient;\n private _stock?: StockClient;\n private _vessels?: VesselsClient;\n private _purchaseOrders?: PurchaseOrdersClient;\n\n constructor(private client: VintraceClient) {}\n\n get costs(): CostsClient {\n return (this._costs ??= new CostsClient(this.client));\n }\n\n get blocks(): BlocksClient {\n return (this._blocks ??= new BlocksClient(this.client));\n }\n\n get bookings(): BookingsClient {\n return (this._bookings ??= new BookingsClient(this.client));\n }\n\n get fruitIntakes(): FruitIntakesClient {\n return (this._fruitIntakes ??= new FruitIntakesClient(this.client));\n }\n\n get tirage(): TirageClient {\n return (this._tirage ??= new TirageClient(this.client));\n }\n\n get barrelsMovements(): BarrelsMovementsClient {\n return (this._barrelsMovements ??= new BarrelsMovementsClient(this.client));\n }\n\n get vesselDetailsReport(): VesselDetailsReportClient {\n return (this._vesselDetailsReport ??= new VesselDetailsReportClient(this.client));\n }\n\n get wineBatches(): WineBatchesClient {\n return (this._wineBatches ??= new WineBatchesClient(this.client));\n }\n\n get documents(): DocumentsClient {\n return (this._documents ??= new DocumentsClient(this.client));\n }\n\n get stock(): StockClient {\n return (this._stock ??= new StockClient(this.client));\n }\n\n get vessels(): VesselsClient {\n return (this._vessels ??= new VesselsClient(this.client));\n }\n\n get purchaseOrders(): PurchaseOrdersClient {\n return (this._purchaseOrders ??= new PurchaseOrdersClient(this.client));\n }\n}\n\nclass WorkOrdersClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * List available work orders.\n *\n * By default returns a list of all work orders that are in \"Ready\",\n * \"In progress\", or \"Submitted\" states and are assigned to me or unassigned\n * with a date range from 7 days ago to 3 days from now.\n */\n async getAll(params?: WorkOrderListParams): Promise<VintraceResult<WorkOrderDetail[]>> {\n /**\n * List available work orders.\n *\n * Maps to GET /workorders/list (v6). By default this returns work orders\n * in Ready, In progress or Submitted states and assigned to the caller or\n * unassigned. Use `fromDate` / `toDate` to filter by scheduled date using\n * YYYY-MM-DD format (example: `2024-01-01`). `assignedTo` accepts:\n * AVAILABLE_TO_ME | ANYONE | MINE_ONLY | UNASSIGNED. `workOrderState` accepts\n * ANY | IN_PROGRESS | NOT_STARTED | SUBMITTED | INCOMPLETE.\n */\n const limit = params?.max ? parseInt(params.max, 10) : 100;\n const firstResponse = await this.client.request<WorkOrderSearchResponse>(\n 'v6/workorders/list',\n 'GET',\n { responseSchema: WorkOrderSearchResponseSchema },\n { ...params, max: String(limit), first: '0' }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.workOrders?.length ?? 0;\n if (totalCount <= limit) {\n return [response.workOrders ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: WorkOrderDetail[] = [...(response.workOrders ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<WorkOrderSearchResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<WorkOrderSearchResponse>(\n 'v6/workorders/list',\n 'GET',\n { responseSchema: WorkOrderSearchResponseSchema },\n { ...params, max: String(limit), first: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.workOrders) {\n allResults.push(...pageData.workOrders);\n }\n }\n }\n\n return [allResults, null];\n }\n\n get(id: string): Promise<VintraceResult<WorkOrderDetail>> {\n /**\n * Get work order details by id or code.\n *\n * Returns a single work order with a given id or code.\n */\n return this.client.request<WorkOrderDetail>(`v6/workorders/${id}`, 'GET', {\n responseSchema: WorkOrderDetailSchema,\n });\n }\n\n getByCode(code: string): Promise<VintraceResult<WorkOrderDetail>> {\n /**\n * Get work order details by code.\n *\n * Returns a work order by its TWL code (e.g. `TWL2827`).\n */\n return this.client.request<WorkOrderDetail>(\n 'v6/workorders',\n 'GET',\n { responseSchema: WorkOrderDetailSchema },\n { code }\n );\n }\n\n getJob(jobId: string): Promise<VintraceResult<unknown>> {\n /**\n * Get job details by id.\n *\n * Retrieve details for a single job by id.\n */\n return this.client.request<unknown>(`v6/workorders/jobs/${jobId}`, 'GET');\n }\n\n assign(workOrderId: number): Promise<VintraceResult<AssignWorkResponse>> {\n /**\n * Assign a work order.\n *\n * Assign a work order to the calling operator.\n */\n return this.client.request<AssignWorkResponse>(\n 'v6/workorders/assign',\n 'POST',\n { responseSchema: AssignWorkResponseSchema, requestSchema: AssignWorkDataSchema },\n { workOrderId }\n );\n }\n\n submit(data: {\n jobId: number;\n submitType?: string;\n fields?: { fieldId: string; value?: string }[];\n }): Promise<VintraceResult<SubmitWorkOrderStepsResponse>> {\n /**\n * Submit job details.\n *\n * Submit job step results. `data` should include `jobId` and optional\n * `submitType` (e.g. 'draft') and `fields` array with { fieldId, value }.\n */\n return this.client.request<SubmitWorkOrderStepsResponse>(\n 'v6/workorders/submit',\n 'POST',\n { responseSchema: SubmitWorkOrderStepsResponseSchema, requestSchema: SubmitJobRequestSchema },\n data\n );\n }\n\n getMany(ids: string[]): Promise<VintraceResult<WorkOrderDetail[]>> {\n /**\n * Get multiple work orders by ids.\n *\n * Batch fetch multiple work orders by their IDs. Returns VintraceAggregateError if any request fails.\n */\n return batchFetch(ids, (id) => this.get(id));\n }\n}\n\nclass SalesOrdersClient {\n constructor(private client: VintraceClient) {}\n /**\n * List available sales orders.\n *\n * Returns a list of the first 100 sales orders.\n */\n async getAll(params?: SalesOrderListParams): Promise<VintraceResult<SalesOrder[]>> {\n const limit = params?.max ? parseInt(params.max, 10) : 100;\n const firstResponse = await this.client.request<SalesOrderResponse>(\n 'v6/sales-order/list',\n 'GET',\n { responseSchema: SalesOrderResponseSchema },\n { ...params, max: String(limit), first: '0' }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.salesOrders?.length ?? 0;\n if (totalCount <= limit) {\n return [response.salesOrders ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: SalesOrder[] = [...(response.salesOrders ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<SalesOrderResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<SalesOrderResponse>(\n 'v6/sales-order/list',\n 'GET',\n { responseSchema: SalesOrderResponseSchema },\n { ...params, max: String(limit), first: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.salesOrders) {\n allResults.push(...pageData.salesOrders);\n }\n }\n }\n\n return [allResults, null];\n }\n\n get(id: string): Promise<VintraceResult<SalesOrder>> {\n /**\n * Get sales order details by id.\n *\n * Returns a single sales order with a given id.\n */\n return this.client.request<SalesOrder>(`v6/sales-order/${id}`, 'GET', {\n responseSchema: SalesOrderSchema,\n });\n }\n\n getByCode(code: string): Promise<VintraceResult<SalesOrder>> {\n /**\n * Get sales order details by code.\n *\n * Returns a single sales order with a given code (e.g. 'VSO20').\n */\n return this.client.request<SalesOrder>(\n 'v6/sales-order',\n 'GET',\n { responseSchema: SalesOrderSchema },\n { code }\n );\n }\n\n create(data: Partial<SalesOrder>): Promise<VintraceResult<SalesOrderUpdateResponse>> {\n /**\n * Create or update a sales order.\n *\n * If updating, include the `id` field in `data`. Note: for discounts, use\n * `discountPct` when accounting integration (Xero) is on; otherwise use\n * `adjustment` for a dollar value.\n */\n return this.client.request<SalesOrderUpdateResponse>(\n 'v6/sales-order',\n 'POST',\n { responseSchema: SalesOrderUpdateResponseSchema, requestSchema: SalesOrderWriteSchema },\n data\n );\n }\n\n update(id: string, data: Partial<SalesOrder>): Promise<VintraceResult<SalesOrderUpdateResponse>> {\n /**\n * Update a sales order by id.\n *\n * Replace (update) a sales order by id. Provide the SalesOrder fields to\n * update in `data`.\n */\n return this.client.request<SalesOrderUpdateResponse>(\n `v6/sales-order/${id}`,\n 'PUT',\n { responseSchema: SalesOrderUpdateResponseSchema, requestSchema: SalesOrderWriteSchema },\n data\n );\n }\n\n getMany(ids: string[]): Promise<VintraceResult<SalesOrder[]>> {\n /**\n * Get multiple sales orders by ids.\n *\n * Batch fetch multiple sales orders by their IDs. Returns VintraceAggregateError if any request fails.\n */\n return batchFetch(ids, (id) => this.get(id));\n }\n}\n\nclass RefundsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * List available refunds.\n *\n * Returns a list of the first 100 refunds.\n */\n async getAll(params?: RefundListParams): Promise<VintraceResult<Refund[]>> {\n /**\n * List available refunds.\n *\n * Maps to GET /refund/list (v6). Filter with `startDate`/`endDate` in\n * YYYY-MM-DD format (example: `2024-01-01`).\n */\n const limit = params?.max ? parseInt(params.max, 10) : 100;\n const firstResponse = await this.client.request<RefundResponse>(\n 'v6/refund/list',\n 'GET',\n { responseSchema: RefundResponseSchema },\n { ...params, max: String(limit), first: '0' }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.refunds?.length ?? 0;\n if (totalCount <= limit) {\n return [response.refunds ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: Refund[] = [...(response.refunds ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<RefundResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<RefundResponse>(\n 'v6/refund/list',\n 'GET',\n { responseSchema: RefundResponseSchema },\n { ...params, max: String(limit), first: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.refunds) {\n allResults.push(...pageData.refunds);\n }\n }\n }\n\n return [allResults, null];\n }\n\n get(id: string): Promise<VintraceResult<Refund>> {\n /**\n * Get refund details by id.\n *\n * Returns a single refund with a given id.\n */\n return this.client.request<Refund>(`v6/refund/${id}`, 'GET', { responseSchema: RefundSchema });\n }\n\n getByCode(code: string): Promise<VintraceResult<Refund>> {\n /**\n * Get refund details by code.\n *\n * Returns a single refund with a given code.\n */\n return this.client.request<Refund>(\n 'v6/refund',\n 'GET',\n { responseSchema: RefundSchema },\n { code }\n );\n }\n\n create(data: Partial<Refund>): Promise<VintraceResult<RefundUpdateResponse>> {\n /**\n * Create or update a refund.\n *\n * To update, include `id` in `data`.\n */\n return this.client.request<RefundUpdateResponse>(\n 'v6/refund',\n 'POST',\n { responseSchema: RefundUpdateResponseSchema, requestSchema: RefundWriteSchema },\n data\n );\n }\n\n update(id: string, data: Partial<Refund>): Promise<VintraceResult<RefundUpdateResponse>> {\n /**\n * Update a refund by id.\n *\n * Replace (update) a refund by id. Provide the Refund fields to\n * update in `data`.\n */\n return this.client.request<RefundUpdateResponse>(\n `v6/refund/${id}`,\n 'PUT',\n { responseSchema: RefundUpdateResponseSchema, requestSchema: RefundWriteSchema },\n data\n );\n }\n\n getMany(ids: string[]): Promise<VintraceResult<Refund[]>> {\n /**\n * Get multiple refunds by ids.\n *\n * Batch fetch multiple refunds by their IDs. Returns VintraceAggregateError if any request fails.\n */\n return batchFetch(ids, (id) => this.get(id));\n }\n}\n\nclass PartiesClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * List parties.\n *\n * Returns a list of the first 100 parties.\n */\n async getAll(params?: PartyListParams): Promise<VintraceResult<Party[]>> {\n /**\n * List parties.\n *\n * Maps to GET /party/list (v6). Use `startsWith` to filter by name start\n * and `category` with values All | Individuals | Organisations.\n */\n const limit = params?.max ? parseInt(params.max, 10) : 100;\n const firstResponse = await this.client.request<PartyResponse>(\n 'v6/party/list',\n 'GET',\n { responseSchema: PartyResponseSchema },\n { ...params, max: String(limit), first: '0' }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.parties?.length ?? 0;\n if (totalCount <= limit) {\n return [response.parties ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: Party[] = [...(response.parties ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<PartyResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<PartyResponse>(\n 'v6/party/list',\n 'GET',\n { responseSchema: PartyResponseSchema },\n { ...params, max: String(limit), first: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.parties) {\n allResults.push(...pageData.parties);\n }\n }\n }\n\n return [allResults, null];\n }\n\n get(id: string): Promise<VintraceResult<Party>> {\n /**\n * Get party details by id.\n *\n * Returns a single party with a given id.\n */\n return this.client.request<Party>(`v6/party/${id}`, 'GET', { responseSchema: PartySchema });\n }\n\n getByName(name: string): Promise<VintraceResult<Party>> {\n /**\n * Get party details by name.\n *\n * Returns a party by its name.\n */\n return this.client.request<Party>('v6/party', 'GET', { responseSchema: PartySchema }, { name });\n }\n\n create(data: Partial<Party>): Promise<VintraceResult<PartyUpdateResponse>> {\n /**\n * Create or update a party.\n *\n * Include `id` in `data` to update an existing party; otherwise a new party will be created.\n */\n return this.client.request<PartyUpdateResponse>(\n 'v6/party',\n 'POST',\n { responseSchema: PartyUpdateResponseSchema, requestSchema: PartyWriteSchema },\n data\n );\n }\n\n getMany(ids: string[]): Promise<VintraceResult<Party[]>> {\n /**\n * Get multiple parties by ids.\n *\n * Batch fetch multiple parties by their IDs. Returns VintraceAggregateError if any request fails.\n */\n return batchFetch(ids, (id) => this.get(id));\n }\n}\n\nclass ProductsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * List available products.\n *\n * Returns a list of all active products.\n */\n async getAll(params?: ProductListParams): Promise<VintraceResult<Product[]>> {\n const limit = params?.max ? parseInt(params.max, 10) : 100;\n const firstResponse = await this.client.request<ProductListResponse>(\n 'v6/products/list',\n 'GET',\n { responseSchema: ProductListResponseSchema },\n { ...params, max: String(limit), first: '0' }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.products?.length ?? 0;\n if (totalCount <= limit) {\n return [response.products ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: Product[] = [...(response.products ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<ProductListResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<ProductListResponse>(\n 'v6/products/list',\n 'GET',\n { responseSchema: ProductListResponseSchema },\n { ...params, max: String(limit), first: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.products) {\n allResults.push(...pageData.products);\n }\n }\n }\n\n return [allResults, null];\n }\n\n get(id: string): Promise<VintraceResult<ProductResponse>> {\n /**\n * Search for a product by id.\n *\n * Searches for a product using an id and returns the product details and vessel information.\n */\n return this.client.request<ProductResponse>(`v6/products/${id}`, 'GET', {\n responseSchema: ProductResponseSchema,\n });\n }\n\n async getMany(ids: string[]): Promise<VintraceResult<Product[]>> {\n /**\n * Get multiple products by ids.\n *\n * Batch fetch multiple products by their IDs. Returns VintraceAggregateError if any request fails.\n */\n const results = await Promise.allSettled(ids.map((id) => this.get(id)));\n const errors: VintraceError[] = [];\n const data: Product[] = [];\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n const [envelope, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (envelope?.product) {\n data.push(envelope.product);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [data, null];\n }\n\n create(data: unknown): Promise<VintraceResult<ProductResponse>> {\n /**\n * Create a new product.\n *\n * Creates a new product with the provided data.\n */\n return this.client.request<ProductResponse>(\n 'v6/products',\n 'POST',\n { responseSchema: ProductResponseSchema, requestSchema: ProductSchema },\n data\n );\n }\n\n update(id: string, data: unknown): Promise<VintraceResult<ProductUpdateResponse>> {\n /**\n * Update a product by id.\n *\n * Replace (update) a product by id with the provided data.\n */\n return this.client.request<ProductUpdateResponse>(\n `v6/products/${id}`,\n 'PUT',\n { responseSchema: ProductUpdateResponseSchema, requestSchema: ProductSchema },\n data\n );\n }\n\n updateFields(data: ProductUpdateData): Promise<VintraceResult<ProductUpdateResponse>> {\n /**\n * Update specific fields on a product.\n *\n * Partially update product fields using the provided data.\n */\n return this.client.request<ProductUpdateResponse>(\n 'v6/product-update',\n 'POST',\n { responseSchema: ProductUpdateResponseSchema, requestSchema: ProductUpdateDataSchema },\n data\n );\n }\n}\n\nclass BlocksClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Get all blocks in the system.\n *\n * Get all the blocks that matches the provided query params in the system.\n * By default, the block data returned in this endpoint only includes:\n * id, code, name, description, grower, vineyard, region, subRegion, varietal,\n * rowNumbers, estate, intendedUse, grading, externalId, inactive\n *\n * API consumer can use the include and vintage query params to request including more information in the response.\n */\n async getAll(params?: BlocksListParams): Promise<VintraceResult<BlockData[]>> {\n const limit = params?.limit ?? 100;\n const queryParams: Record<string, string> = { limit: String(limit), offset: '0' };\n if (params?.include) queryParams.include = params.include;\n if (params?.vintage) queryParams.vintage = params.vintage;\n if (params?.VintraceEntityIds) queryParams.VintraceEntityIds = params.VintraceEntityIds;\n if (params?.offset) queryParams.offset = String(params.offset);\n\n const firstResponse = await this.client.request<GetBlocksSuccessResponse>(\n 'v7/harvest/blocks',\n 'GET',\n { responseSchema: GetBlocksSuccessResponseSchema },\n queryParams\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResults ?? 0;\n if (totalCount <= limit) {\n return [response.results ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: BlockData[] = [...(response.results ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<GetBlocksSuccessResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const pageOffset = (i + j) * limit;\n const pageParams: Record<string, string> = { ...queryParams, offset: String(pageOffset) };\n batchPromises.push(\n this.client.request<GetBlocksSuccessResponse>(\n 'v7/harvest/blocks',\n 'GET',\n { responseSchema: GetBlocksSuccessResponseSchema },\n pageParams\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.results) {\n allResults.push(...pageData.results);\n }\n }\n }\n\n return [allResults, null];\n }\n\n /**\n * Upsert block data into system.\n *\n * Create or update block data in the system. Provide a Block object in `data`.\n * Example fields: `extId`, `name`, `estate`, `vineyard`, `variety`, `area`.\n */\n async post(data: unknown): Promise<VintraceResult<Block>> {\n const [response, error] = await this.client.request<BlockResponse>(\n 'v7/harvest/blocks',\n 'POST',\n { responseSchema: BlockResponseSchema },\n data\n );\n if (error) return [null, error];\n if (!response?.data) return [null, null];\n return [response.data, null];\n }\n\n patch(id: string, data: unknown) {\n /**\n * Partially update some fields in the block record.\n *\n * Provide functionality to update only some fields in the bulk intake record.\n * Note, not all fields will support this PATCH operation.\n */\n return this.client.request<unknown>(`v7/harvest/blocks/${id}`, 'PATCH', {}, data);\n }\n\n /**\n * Upsert assessment data for a block.\n *\n * Create or update assessment data for a block by its blockId.\n */\n createAssessment(blockId: string, data: unknown): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(\n `v7/harvest/blocks/${blockId}/assessments`,\n 'POST',\n {},\n data\n );\n }\n}\n\nclass BookingsClient {\n constructor(private client: VintraceClient) {}\n\n post(data: unknown) {\n /**\n * Upsert a booking into vintrace.\n *\n * Create or update a booking record.\n */\n return this.client.request<unknown>('v7/operation/bookings', 'POST', {}, data);\n }\n\n deactivate(id: string) {\n /**\n * Deactivate this booking record.\n *\n * Deactivates a booking by its ID.\n */\n return this.client.request<unknown>(`v7/operation/bookings/${id}/deactivation`, 'POST');\n }\n}\n\nclass VesselDetailsReportClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Get vessel details report.\n *\n * Returns a vessel details report based on the provided parameters.\n */\n async get(\n params?: VesselDetailsReportParams\n ): Promise<VintraceResult<GetBulkWineDetailsReportResponse>> {\n const baseOffset = params?.offset ?? 0;\n const limit = params?.limit ?? 100;\n const firstResponse = await this.client.request<GetBulkWineDetailsReportResponse>(\n 'v7/report/vessel-details-report',\n 'GET',\n { responseSchema: GetBulkWineDetailsReportResponseSchema },\n { ...params, limit: String(limit), offset: String(baseOffset) }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [null, null];\n }\n\n const totalCount = response.totalResults ?? response.results?.length ?? 0;\n if (totalCount <= limit) {\n return [response, null];\n }\n const allResults = [...(response.results ?? [])];\n\n const pageFetcher = async (\n relativeOffset: number,\n pageLimit: number\n ): Promise<VintraceResult<PaginatedResponse<BulkWineDetails>>> => {\n const [pageData, pageError] = await this.client.request<GetBulkWineDetailsReportResponse>(\n 'v7/report/vessel-details-report',\n 'GET',\n { responseSchema: GetBulkWineDetailsReportResponseSchema },\n {\n ...params,\n limit: String(pageLimit),\n offset: String(baseOffset + limit + relativeOffset),\n }\n );\n\n if (pageError) {\n return [null, pageError];\n }\n\n if (!pageData) {\n return [null, null];\n }\n\n return [\n {\n totalResults: pageData.totalResults ?? 0,\n offset: pageData.offset ?? baseOffset + limit + relativeOffset,\n limit: pageData.limit ?? pageLimit,\n first: pageData.first ?? null,\n previous: pageData.previous ?? null,\n next: pageData.next ?? null,\n last: pageData.last ?? null,\n results: pageData.results ?? [],\n },\n null,\n ];\n };\n\n try {\n for await (const item of paginate(pageFetcher, { limit })) {\n allResults.push(item);\n }\n } catch (error) {\n if (error instanceof VintraceError) {\n return [null, error];\n }\n return [null, new VintraceError(error instanceof Error ? error.message : 'Unknown error', 0)];\n }\n\n return [\n {\n ...response,\n results: allResults,\n },\n null,\n ];\n }\n}\n\nexport interface CostsBusinessUnitTransactionsParams {\n startDate: number;\n endDate: number;\n limit?: number;\n offset?: number;\n businessUnit?: string;\n wineryName?: string;\n wineryId?: number;\n}\n\nclass CostsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Return bulk wine cost movements between two dates.\n *\n * Returns business unit transaction details for cost movements within a date range.\n */\n async businessUnitTransactions(\n params: CostsBusinessUnitTransactionsParams\n ): Promise<VintraceResult<TransactionDetails[]>> {\n const limit = params?.limit ?? 100;\n const firstResponse = await this.client.request<GetBusinessUnitTransactionsResponse>(\n 'v7/costs/business-unit-transactions',\n 'GET',\n { responseSchema: GetBusinessUnitTransactionsResponseSchema },\n { ...params, limit: String(limit), offset: String(params.offset ?? 0) }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResults ?? response.results?.length ?? 0;\n if (totalCount <= limit) {\n return [response.results ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: TransactionDetails[] = [...(response.results ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<GetBusinessUnitTransactionsResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<GetBusinessUnitTransactionsResponse>(\n 'v7/costs/business-unit-transactions',\n 'GET',\n { responseSchema: GetBusinessUnitTransactionsResponseSchema },\n { ...params, limit: String(limit), offset: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.results) {\n allResults.push(...pageData.results);\n }\n }\n }\n\n return [allResults, null];\n }\n}\n\nexport interface WineBatchesListParams {\n limit?: number;\n offset?: number;\n ids?: string;\n include?: string;\n}\n\nclass WineBatchesClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Get a list of wine batches.\n *\n * Returns a paginated list of wine batches.\n */\n async getAll(params?: WineBatchesListParams): Promise<VintraceResult<WineBatchData[]>> {\n const limit = params?.limit ?? 100;\n const queryParams: Record<string, string> = {\n limit: String(limit),\n offset: String(params?.offset ?? 0),\n };\n if (params?.ids) queryParams.ids = params.ids;\n if (params?.include) queryParams.include = params.include;\n\n const firstResponse = await this.client.request<GetWineBatchSuccessResponse>(\n 'v7/operation/wine-batches',\n 'GET',\n { responseSchema: GetWineBatchSuccessResponseSchema },\n queryParams\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n // Defense-in-depth guard — only reached when response validation is disabled\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResults ?? response.results?.length ?? 0;\n if (totalCount <= limit) {\n return [response.results ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n const allResults: WineBatchData[] = [...(response.results ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<GetWineBatchSuccessResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const pageOffset = (i + j) * limit;\n batchPromises.push(\n this.client.request<GetWineBatchSuccessResponse>(\n 'v7/operation/wine-batches',\n 'GET',\n { responseSchema: GetWineBatchSuccessResponseSchema },\n { ...queryParams, offset: String(pageOffset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.results) {\n allResults.push(...pageData.results);\n }\n }\n }\n\n return [allResults, null];\n }\n\n /**\n * Create a wine batch.\n */\n create(data: CreateWineBatchRequest): Promise<VintraceResult<CreateWineBatchSuccessResponse>> {\n return this.client.request<CreateWineBatchSuccessResponse>(\n 'v7/operation/wine-batches',\n 'POST',\n {\n responseSchema: CreateWineBatchSuccessResponseSchema,\n requestSchema: CreateWineBatchRequestSchema,\n },\n data\n );\n }\n}\n\nclass TirageClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Get a tirage by operation ID.\n *\n * Returns a single tirage by its operation ID.\n */\n get(operationId: string): Promise<VintraceResult<TirageSuccessResponse>> {\n return this.client.request<TirageSuccessResponse>(`v7/operation/tirage/${operationId}`, 'GET', {\n responseSchema: TirageSuccessResponseSchema,\n });\n }\n\n /**\n * Patch a tirage.\n *\n * Updates a tirage record.\n */\n patch(operationId: string, data: unknown): Promise<VintraceResult<TirageSuccessResponse>> {\n return this.client.request<TirageSuccessResponse>(\n `v7/operation/tirage/${operationId}`,\n 'PATCH',\n { responseSchema: TirageSuccessResponseSchema },\n data\n );\n }\n}\n\nclass BarrelsMovementsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Create a barrels movement.\n *\n * Creates a new barrels movement in the system.\n */\n post(data: unknown): Promise<VintraceResult<BarrelsMovement>> {\n return this.client.request<BarrelsMovement>(\n 'v7/operation/barrels-movements',\n 'POST',\n { requestSchema: CreateBarrelsMovementRequestSchema },\n data\n );\n }\n}\n\nclass FruitIntakesClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Create a fruit intake.\n *\n * Record a new fruit intake transaction.\n */\n create(data: unknown): Promise<VintraceResult<CreateFruitIntakeSuccessResponse>> {\n return this.client.request<CreateFruitIntakeSuccessResponse>(\n 'v7/operation/fruit-intakes',\n 'POST',\n {\n requestSchema: FruitIntakeRequestSchema,\n responseSchema: CreateFruitIntakeSuccessResponseSchema,\n },\n data\n );\n }\n\n /**\n * Update pricing for a fruit intake.\n *\n * Update the pricing related data for this fruit intake record.\n */\n updatePricing(\n fruitIntakeId: string,\n data: UpdateFruitIntakePricing\n ): Promise<VintraceResult<UpdateFruitIntakePricingResponse>> {\n return this.client.request<UpdateFruitIntakePricingResponse>(\n `v7/operation/fruit-intakes/${fruitIntakeId}/pricing`,\n 'PUT',\n {\n requestSchema: UpdateFruitIntakePricingSchema,\n responseSchema: UpdateFruitIntakePricingResponseSchema,\n },\n data\n );\n }\n\n /**\n * Update metrics for a fruit intake.\n *\n * Update the metrics for this fruit intake record.\n */\n updateMetrics(\n fruitIntakeId: string,\n data: UpdateMetrics\n ): Promise<VintraceResult<UpdateMetricsResponse>> {\n return this.client.request<UpdateMetricsResponse>(\n `v7/operation/fruit-intakes/${fruitIntakeId}/metrics`,\n 'PUT',\n { responseSchema: UpdateMetricsResponseSchema, requestSchema: UpdateMetricsSchema },\n data\n );\n }\n}\n\nclass DocumentsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Upload a file to an operation.\n *\n * Attach documents to a specified operation.\n */\n attach(data: unknown): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v7/operation/operation/documents', 'PUT', {}, data);\n }\n}\n\nexport interface StockDispatchesListParams {\n limit?: number;\n offset?: number;\n}\n\nclass StockClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Receive stock.\n *\n * Perform a receive stock operation in the system.\n */\n receive(data: unknown): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v7/stock/receivals', 'POST', {}, data);\n }\n\n /**\n * Get all stock dispatches.\n *\n * Returns a paginated list of stock dispatch actions.\n */\n async getDispatches(params?: StockDispatchesListParams): Promise<VintraceResult<unknown[]>> {\n const limit = params?.limit ?? 100;\n const firstResponse = await this.client.request<unknown>(\n 'v7/stock/dispatches',\n 'GET',\n {},\n { ...params, limit: String(limit), offset: String(params?.offset ?? 0) }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0] as { totalResults?: number; results?: unknown[] } | null;\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResults ?? response.results?.length ?? 0;\n if (totalCount <= limit) {\n return [response.results ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n const allResults: unknown[] = [...(response.results ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<unknown>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<unknown>(\n 'v7/stock/dispatches',\n 'GET',\n {},\n { ...params, limit: String(limit), offset: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n const pData = pageData as { results?: unknown[] } | null;\n if (pData?.results) {\n allResults.push(...pData.results);\n }\n }\n }\n\n return [allResults, null];\n }\n}\n\nclass VesselsClient {\n constructor(private client: VintraceClient) {}\n\n getBarrel(id: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v7/vessel/barrels/${id}`, 'GET');\n }\n\n getBarrelGroup(id: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v7/vessel/barrel-groups/${id}`, 'GET');\n }\n\n createTank(data: unknown): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v7/vessel/tanks', 'POST', {}, data);\n }\n\n getTank(id: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v7/vessel/tanks/${id}`, 'GET');\n }\n\n getTanker(id: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v7/vessel/tankers/${id}`, 'GET');\n }\n\n getBin(id: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v7/vessel/bins/${id}`, 'GET');\n }\n}\n\nclass PurchaseOrdersClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Create or update a purchase order.\n */\n create(data: unknown): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v7/account/purchase-orders', 'POST', {}, data);\n }\n\n /**\n * Get purchase order details by id.\n */\n async get(id: string): Promise<VintraceResult<PurchaseOrder>> {\n const [response, error] = await this.client.request<PurchaseOrderResponse>(\n `v7/account/purchase-orders/${id}`,\n 'GET',\n { responseSchema: PurchaseOrderResponseSchema }\n );\n if (error) return [null, error];\n if (!response?.data) return [null, null];\n return [response.data, null];\n }\n}\n\nclass TransactionsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Transaction search.\n *\n * Returns a list of transactions matching search criteria.\n */\n async search(params?: TransactionSearchParams): Promise<VintraceResult<unknown[]>> {\n const limit = params?.maxResults ? params.maxResults : 100;\n const firstResponse = await this.client.request<TransactionSearchResponse>(\n 'v6/transaction/search',\n 'GET',\n { responseSchema: TransactionSearchResponseSchema },\n { ...params, maxResults: limit, firstResult: 0 }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.results?.length ?? 0;\n if (totalCount <= limit) {\n return [response.results ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: unknown[] = [...(response.results ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<TransactionSearchResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<TransactionSearchResponse>(\n 'v6/transaction/search',\n 'GET',\n { responseSchema: TransactionSearchResponseSchema },\n { ...params, maxResults: limit, firstResult: offset }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.results) {\n allResults.push(...pageData.results);\n }\n }\n }\n\n return [allResults, null];\n }\n}\n\nclass IntakeOperationsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Fruit intake operation search.\n *\n * Returns a list of fruit intake operations matching search criteria.\n */\n async search(params?: IntakeOperationSearchParams): Promise<VintraceResult<unknown[]>> {\n const limit = params?.maxResults ? params.maxResults : 100;\n const firstResponse = await this.client.request<IntakeOperationSearchResponse>(\n 'v6/intake-operations/search',\n 'GET',\n { responseSchema: IntakeOperationSearchResponseSchema },\n { ...params, maxResults: limit, firstResult: 0 }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.results?.length ?? 0;\n if (totalCount <= limit) {\n return [response.results ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: unknown[] = [...(response.results ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<IntakeOperationSearchResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<IntakeOperationSearchResponse>(\n 'v6/intake-operations/search',\n 'GET',\n { responseSchema: IntakeOperationSearchResponseSchema },\n { ...params, maxResults: limit, firstResult: offset }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.results) {\n allResults.push(...pageData.results);\n }\n }\n }\n\n return [allResults, null];\n }\n}\n\nclass SampleOperationsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Maturity samples search.\n *\n * Returns a list of maturity samples matching search criteria from\n * `GET v6/sample-operations/search`.\n *\n * **Pagination behaviour:**\n * - By default (`maxResults` and `firstResult` omitted) the method\n * auto-paginates and returns **all** matching records by following the\n * API's `nextResult` cursor until a short page signals the end.\n * - Pass `maxResults` and/or `firstResult` to control pagination yourself —\n * in that case a single page is returned as-is.\n *\n * @param params.blockId - Filter by vintrace block ID.\n * @param params.blockName - Filter by block name (partial match).\n * @param params.vineyardId - Filter by vineyard ID.\n * @param params.vineyardName - Filter by vineyard name.\n * @param params.growerId - Filter by grower ID.\n * @param params.growerName - Filter by grower name.\n * @param params.ownerId - Filter by owner ID.\n * @param params.ownerName - Filter by owner name.\n * @param params.vintage - Filter by vintage year in YYYY format (e.g. `\"2022\"`).\n * @param params.operationId - Filter by a specific operation ID.\n * @param params.processId - Filter by delivery process ID.\n * @param params.externalBlockId - Filter by external block ID.\n * @param params.externalSystemBlocksOnly - Only return blocks that have an external ID set.\n * @param params.recordedAfter - Only return records with an effective date after this\n * timestamp (milliseconds since Unix epoch, e.g. `157813337000`).\n * @param params.recordedBefore - Only return records with an effective date before this\n * timestamp (milliseconds since Unix epoch, e.g. `157813337000`).\n * @param params.modifiedSince - Only return records added/modified/reversed since this\n * timestamp (milliseconds since Unix epoch).\n * @param params.maxResults - Page size (default `100`). Supply this to opt out of\n * auto-pagination and receive a single page.\n * @param params.firstResult - Zero-based offset to start from. Supply this together\n * with `maxResults` to manually page through results.\n * @param params.customAdapter - Special adapter reference for customised `additionalDetails`\n * fields (use as directed by vintrace support).\n *\n * @example\n * // Auto-paginate — returns every matching sample\n * const [samples, error] = await client.v6.sampleOperations.search({\n * vintage: '2023',\n * recordedBefore: String(Date.now()),\n * });\n *\n * @example\n * // Manual page — first 20 results only\n * const [page, error] = await client.v6.sampleOperations.search({\n * maxResults: 20,\n * firstResult: 0,\n * });\n */\n async search(params?: SampleOperationSearchParams): Promise<VintraceResult<unknown[]>> {\n const limit = params?.maxResults ?? 100;\n const firstResponse = await this.client.request<SampleOperationSearchResponse>(\n 'v6/sample-operations/search',\n 'GET',\n { responseSchema: SampleOperationSearchResponseSchema },\n { ...params, maxResults: limit, firstResult: params?.firstResult ?? 0 }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const firstPage = response.samples ?? [];\n // If the caller supplied an explicit maxResults or firstResult, return the\n // single page as-is — they are controlling pagination themselves.\n if (params?.maxResults != null || params?.firstResult != null) {\n return [firstPage, null];\n }\n\n const allResults: unknown[] = [...firstPage];\n\n // The API signals \"no more pages\" by returning fewer items than the limit,\n // not by setting nextResult to null (nextResult is always a number).\n let nextOffset: number | null | undefined =\n firstPage.length >= limit ? response.nextResult : null;\n while (nextOffset != null) {\n const [pageData, pageError] = await this.client.request<SampleOperationSearchResponse>(\n 'v6/sample-operations/search',\n 'GET',\n { responseSchema: SampleOperationSearchResponseSchema },\n { ...params, maxResults: limit, firstResult: nextOffset }\n );\n if (pageError) {\n return [null, pageError];\n }\n const page = pageData?.samples ?? [];\n allResults.push(...page);\n // Stop when this page came back short (last page).\n nextOffset = page.length >= limit ? (pageData?.nextResult ?? null) : null;\n }\n\n return [allResults, null];\n }\n}\n\nclass BlockAssessmentsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Create a block assessment.\n *\n * Upsert the assessment data for a block.\n */\n create(data: unknown): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v6/block-assessments/create', 'POST', {}, data);\n }\n}\n\nclass MrpStockClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * View a single stock item.\n *\n * Get a single stock item by ID with optional expand parameter.\n */\n get(id: string, expand?: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(\n `v6/mrp/stock/${id}`,\n 'GET',\n {},\n expand ? { expand } : undefined\n );\n }\n\n getFields(id: string): Promise<VintraceResult<unknown>> {\n /**\n * View list of details fields.\n *\n * Returns a list of detail fields for a stock item.\n */\n return this.client.request<unknown>(`v6/mrp/stock/${id}/fields`, 'GET');\n }\n\n getDistributions(id: string): Promise<VintraceResult<unknown>> {\n /**\n * View distributions.\n *\n * Returns distributions for a stock item.\n */\n return this.client.request<unknown>(`v6/mrp/stock/${id}/distributions`, 'GET');\n }\n\n getHistoryItems(id: string, params: MrpStockHistoryParams): Promise<VintraceResult<unknown>> {\n /**\n * View History items.\n *\n * A paginated list of history items for a stock item.\n */\n return this.client.request<unknown>(`v6/mrp/stock/${id}/history-items`, 'GET', {}, params);\n }\n\n getRawComponents(id: string): Promise<VintraceResult<unknown>> {\n /**\n * View raw components.\n *\n * Returns a paginated list of raw components for a stock item.\n */\n return this.client.request<unknown>(`v6/mrp/stock/${id}/raw-components`, 'GET');\n }\n\n getNotes(id: string, params?: MrpStockNotesParams): Promise<VintraceResult<unknown>> {\n /**\n * Get notes for a stock item.\n *\n * Returns notes associated with a stock item.\n */\n return this.client.request<unknown>(`v6/mrp/stock/${id}/notes`, 'GET', {}, params);\n }\n\n postNote(id: string, data: unknown): Promise<VintraceResult<unknown>> {\n /**\n * Create a note for a stock item.\n *\n * Adds a new note to a stock item.\n */\n return this.client.request<unknown>(`v6/mrp/stock/${id}/notes`, 'POST', {}, data);\n }\n\n getNote(id: string, noteId: string): Promise<VintraceResult<unknown>> {\n /**\n * Get a specific note for a stock item.\n *\n * Returns a specific note by ID for a stock item.\n */\n return this.client.request<unknown>(`v6/mrp/stock/${id}/notes/${noteId}`, 'GET');\n }\n\n updateNote(id: string, noteId: string, data: unknown): Promise<VintraceResult<unknown>> {\n /**\n * Update a note for a stock item.\n *\n * Updates an existing note on a stock item.\n */\n return this.client.request<unknown>(\n `v6/mrp/stock/${id}/notes/${noteId}/updates`,\n 'POST',\n {},\n data\n );\n }\n\n getBulkInfo(id: string): Promise<VintraceResult<unknown>> {\n /**\n * Get bulk info for a stock item.\n *\n * Returns bulk information for a stock item.\n */\n return this.client.request<unknown>(`v6/mrp/stock/${id}/bulk-info`, 'GET');\n }\n}\n\nexport interface StockLookupParams {\n code?: string;\n id?: string;\n}\n\nclass InventoryClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * List available stock.\n *\n * Returns a list of all stock items.\n */\n async getAll(params?: InventoryListParams): Promise<VintraceResult<unknown[]>> {\n const limit = params?.max ? parseInt(params.max, 10) : 100;\n const firstResponse = await this.client.request<InventoryResponse>(\n 'v6/inventory',\n 'GET',\n { responseSchema: InventoryResponseSchema },\n { ...params, max: String(limit), first: '0' }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.results?.length ?? 0;\n if (totalCount <= limit) {\n return [response.results ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: unknown[] = [...(response.results ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<InventoryResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<InventoryResponse>(\n 'v6/inventory',\n 'GET',\n { responseSchema: InventoryResponseSchema },\n { ...params, max: String(limit), first: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.results) {\n allResults.push(...pageData.results);\n }\n }\n }\n\n return [allResults, null];\n }\n\n /**\n * Get stock item by code or id.\n *\n * Returns a single stock item by code or id.\n */\n lookup(params?: StockLookupParams): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v6/stock/lookup', 'GET', {}, params);\n }\n}\n\nclass SearchClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * List results for item type.\n *\n * Returns search results for a specific item type.\n * Supported types are grading, owner, program, varietal, vintage,\n * productState, region, block, grower, productCategory, batch, product, tank,\n * vessel, containerEquipment, barrel, bin.\n */\n async list(params: SearchListParams): Promise<VintraceResult<unknown[]>> {\n const limit = params?.max ? parseInt(params.max, 10) : 100;\n const firstResponse = await this.client.request<SearchListResponse>(\n 'v6/search/list',\n 'GET',\n { responseSchema: SearchListResponseSchema },\n { ...params, max: String(limit), first: '0' }\n );\n\n if (firstResponse[1]) {\n return [null, firstResponse[1]];\n }\n\n const response = firstResponse[0];\n if (!response) {\n return [[], null];\n }\n\n const totalCount = response.totalResultCount ?? response.results?.length ?? 0;\n if (totalCount <= limit) {\n return [response.results ?? [], null];\n }\n\n const pagesNeeded = Math.ceil(totalCount / limit);\n const parallelLimit = this.client.options.parallelLimit;\n\n const allResults: unknown[] = [...(response.results ?? [])];\n\n for (let i = 1; i < pagesNeeded; i += parallelLimit) {\n const batchSize = Math.min(parallelLimit, pagesNeeded - i);\n const batchPromises: Promise<VintraceResult<SearchListResponse>>[] = [];\n\n for (let j = 0; j < batchSize; j++) {\n const offset = (i + j) * limit;\n batchPromises.push(\n this.client.request<SearchListResponse>(\n 'v6/search/list',\n 'GET',\n { responseSchema: SearchListResponseSchema },\n { ...params, max: String(limit), first: String(offset) }\n )\n );\n }\n\n const batchResults = await Promise.all(batchPromises);\n for (const [pageData, pageError] of batchResults) {\n if (pageError) {\n return [null, pageError];\n }\n if (pageData?.results) {\n allResults.push(...pageData.results);\n }\n }\n }\n\n return [allResults, null];\n }\n}\n\nclass ProductAnalysisClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Get analysis data for a product by its numeric ID.\n * The endpoint path matches the `productAnalysisEndpoint` field returned on a Product.\n * e.g. GET v6/product-analysis/{productId}\n */\n get(\n productId: number,\n params?: ProductAnalysisParams\n ): Promise<VintraceResult<ProductAnalysisResponse>> {\n return this.client.request<ProductAnalysisResponse>(\n `v6/product-analysis/${productId}`,\n 'GET',\n { responseSchema: ProductAnalysisResponseSchema },\n params\n );\n }\n\n /**\n * Fetch analysis for multiple product IDs in parallel.\n * Respects the client's `parallelLimit` option (default 5 concurrent).\n * Returns `VintraceAggregateError` if any individual request fails.\n */\n getMany(\n productIds: number[],\n params?: ProductAnalysisParams\n ): Promise<VintraceResult<ProductAnalysisResponse[]>> {\n return this.batchGet(productIds, (id) => this.get(id, params));\n }\n\n private async batchGet(\n ids: number[],\n fetchFn: (id: number) => Promise<VintraceResult<ProductAnalysisResponse>>\n ): Promise<VintraceResult<ProductAnalysisResponse[]>> {\n const limit = this.client.options.parallelLimit;\n const errors: VintraceError[] = [];\n const data: ProductAnalysisResponse[] = [];\n\n for (let i = 0; i < ids.length; i += limit) {\n const chunk = ids.slice(i, i + limit);\n const results = await Promise.allSettled(chunk.map((id) => fetchFn(id)));\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n const [item, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (item !== null) {\n data.push(item);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [data, null];\n }\n}\n\nclass ProductCompositionClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Get composition (blend components) for a product by its numeric ID.\n * The endpoint path matches the `productCompositionEndpoint` field returned on a Product.\n * e.g. GET v6/product-composition/{productId}\n */\n get(productId: number): Promise<VintraceResult<ProductCompositionResponse>> {\n return this.client.request<ProductCompositionResponse>(\n `v6/product-composition/${productId}`,\n 'GET',\n { responseSchema: ProductCompositionResponseSchema }\n );\n }\n}\n\nclass ProductJobsClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Get job history for a product by its numeric ID.\n * Returns the job details and history for a product including transfers,\n * treatments, and other operations performed on it.\n * e.g. GET v6/product-jobs/{productId}\n */\n get(productId: number): Promise<VintraceResult<ProductJobResponse>> {\n return this.client.request<ProductJobResponse>(`v6/product-jobs/${productId}`, 'GET', {\n responseSchema: ProductJobResponseSchema,\n });\n }\n\n /**\n * Get job history for multiple products by their numeric IDs.\n * Respects the client's `parallelLimit` option (default 5 concurrent).\n * Returns `VintraceAggregateError` if any individual request fails.\n */\n getAll(productIds: number[]): Promise<VintraceResult<ProductJobResponse[]>> {\n return this.batchGet(productIds, (id) => this.get(id));\n }\n\n private async batchGet(\n ids: number[],\n fetchFn: (id: number) => Promise<VintraceResult<ProductJobResponse>>\n ): Promise<VintraceResult<ProductJobResponse[]>> {\n const limit = this.client.options.parallelLimit;\n const errors: VintraceError[] = [];\n const data: ProductJobResponse[] = [];\n\n for (let i = 0; i < ids.length; i += limit) {\n const chunk = ids.slice(i, i + limit);\n const results = await Promise.allSettled(chunk.map((id) => fetchFn(id)));\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n const [item, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (item !== null) {\n data.push(item);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [data, null];\n }\n}\n"]}
|