@simpleapps-com/augur-api
Version:
TypeScript client library for Augur microservices API endpoints
113 lines • 4.37 kB
JavaScript
import { z } from 'zod';
import { BaseResponseSchema, BaseGetParamsSchema } from '../../../core/schemas';
import { BaseNexusEntitySchema } from './common';
import { mysqlDatetimeSchema } from '../../../core/schema-utils';
/**
* Schema for bin transfer line items in create requests
* Simplified schema for creating bin transfers
*/
export const BinTransferLineCreateSchema = z.object({
lineNo: z.number(),
invMastUid: z.number(),
itemId: z.string(),
toBin: z.string(),
fromBin: z.string(),
lot: z.string(),
uom: z.string(),
moveAvailable: z.string().optional().default('N'),
moveAllocations: z.string().optional().default('N'),
quantity: z.number().optional(),
});
/**
* Schema for bin transfer line items in responses
* IMPORTANT: DateTime format differs from OpenAPI spec
* OpenAPI expects ISO format, API returns "YYYY-MM-DD HH:mm:ss" format
*/
export const BinTransferLineSchema = z.object({
binTransferHdrUid: z.number().int(),
lineNo: z.number(),
dateCreated: mysqlDatetimeSchema(),
dateLastModified: mysqlDatetimeSchema(),
updateCd: z.number().int(),
statusCd: z.number().int(),
processCd: z.number().int(),
locationId: z.number().nullable(),
invMastUid: z.number().int(),
itemId: z.string().max(40),
toBin: z.string().max(10),
fromBin: z.string().max(10),
lot: z.string().max(40),
uom: z.string().max(8),
moveAvailable: z.string().max(1),
moveAllocations: z.string().max(1),
jsonData: z.string().max(16777215).nullable(),
quantity: z.number().nullable(),
});
/**
* Schema for bin transfer entity
* Based on OpenAPI spec with proper constraints - all fields are REQUIRED per specification
*/
export const BinTransferSchema = BaseNexusEntitySchema.extend({
binTransferHdrUid: z.number().int(),
properties: z.string().max(16777215).nullable(),
response: z.string().max(16777215).nullable(),
usersId: z.number().int(),
locationId: z.number(),
});
/**
* Schema for bin transfer status with line items
* IMPORTANT: This schema differs from OpenAPI spec due to API inconsistencies:
* 1. OpenAPI spec missing 'lines' property - but API returns it
* 2. OpenAPI expects ISO datetime - but API returns "YYYY-MM-DD HH:mm:ss" format
* 3. OpenAPI defines options/params as objects - but API returns arrays
*/
export const BinTransferStatusSchema = z.object({
binTransferHdrUid: z.number().int(),
importState: z.string().max(30),
dateCreated: mysqlDatetimeSchema(),
dateLastModified: mysqlDatetimeSchema(),
updateCd: z.number().int(),
statusCd: z.number().int(),
processCd: z.number().int(),
jsonData: z.string().max(16777215).nullable(),
properties: z.string().max(16777215).nullable(),
requestId: z.string().max(255).nullable(),
response: z.string().max(16777215).nullable(),
usersId: z.number().int(),
locationId: z.number(),
lines: z.array(BinTransferLineSchema), // MISSING from OpenAPI spec but present in API response
});
/**
* Schema for bin transfer list query parameters
*/
export const BinTransferListParamsSchema = BaseGetParamsSchema.extend({
statusCd: z.coerce.number().int().positive().optional(),
});
/**
* Schema for bin transfer creation request
*/
export const BinTransferCreateRequestSchema = z.object({
usersId: z.number(),
locationId: z.number(),
requestId: z.string().optional(),
transfers: z.array(BinTransferLineCreateSchema),
});
/**
* Schema for bin transfer update request
*/
export const BinTransferUpdateRequestSchema = z
.object({
statusCd: z.number(),
processCd: z.number(),
jsonData: z.string(),
properties: z.string(),
})
.partial();
// Response schemas - using BaseResponseSchema (now updated to match OpenAPI spec)
export const BinTransferListResponseSchema = BaseResponseSchema(z.array(BinTransferSchema));
export const BinTransferGetResponseSchema = BaseResponseSchema(BinTransferSchema);
export const BinTransferStatusResponseSchema = BaseResponseSchema(BinTransferStatusSchema);
export const BinTransferCreateResponseSchema = BaseResponseSchema(BinTransferSchema);
export const BinTransferUpdateResponseSchema = BaseResponseSchema(BinTransferSchema);
export const BinTransferDeleteResponseSchema = BaseResponseSchema(BinTransferSchema);
//# sourceMappingURL=bin-transfers.js.map