UNPKG

@simpleapps-com/augur-api

Version:

TypeScript client library for Augur microservices API endpoints

841 lines 77.7 kB
import { BaseServiceClient } from '../../core/base-client'; import { BinTransferListParamsSchema, BinTransferListResponseSchema, BinTransferGetResponseSchema, BinTransferStatusResponseSchema, BinTransferCreateRequestSchema, BinTransferCreateResponseSchema, BinTransferUpdateRequestSchema, BinTransferUpdateResponseSchema, BinTransferDeleteResponseSchema, ReceivingListParamsSchema, ReceivingListResponseSchema, ReceivingGetResponseSchema, ReceivingCreateRequestSchema, ReceivingCreateResponseSchema, ReceivingUpdateRequestSchema, ReceivingUpdateResponseSchema, ReceivingDeleteResponseSchema, TransferListParamsSchema, TransferListResponseSchema, TransferGetResponseSchema, TransferCreateRequestSchema, TransferCreateResponseSchema, TransferUpdateRequestSchema, TransferUpdateResponseSchema, TransferDeleteResponseSchema, PurchaseOrderReceiptListParamsSchema, PurchaseOrderReceiptListResponseSchema, PurchaseOrderReceiptGetResponseSchema, PurchaseOrderReceiptCreateRequestSchema, PurchaseOrderReceiptCreateResponseSchema, PurchaseOrderReceiptUpdateRequestSchema, PurchaseOrderReceiptUpdateResponseSchema, PurchaseOrderReceiptDeleteResponseSchema, TransferReceiptListParamsSchema, TransferReceiptListResponseSchema, TransferReceiptGetResponseSchema, TransferReceiptCreateRequestSchema, TransferReceiptCreateResponseSchema, TransferReceiptUpdateRequestSchema, TransferReceiptUpdateResponseSchema, TransferReceiptDeleteResponseSchema, TransferShippingListParamsSchema, TransferShippingListResponseSchema, TransferShippingGetResponseSchema, TransferShippingCreateRequestSchema, TransferShippingCreateResponseSchema, TransferShippingUpdateRequestSchema, TransferShippingUpdateResponseSchema, TransferShippingDeleteResponseSchema, HealthCheckResponseSchema, PingResponseSchema, } from './schemas'; /** * Nexus API Client * @description Client for interacting with Nexus microservice API endpoints for comprehensive warehouse management * @fullPath api.nexus * @service nexus * @domain warehouse-management * @discoverable true * @searchTerms ["nexus", "warehouse management", "inventory transfers", "receiving", "bin transfers", "warehouse operations"] * @relatedEndpoints ["api.nexus.binTransfers", "api.nexus.receivings", "api.nexus.transfers", "api.nexus.health"] * @commonPatterns ["Warehouse management operations", "Inventory movement tracking", "Receiving and transfer processing"] * @example * ```typescript * import { HTTPClient } from '@augur/api-client/core'; * import { NexusClient } from '@augur/api-client/services/nexus'; * * const http = new HTTPClient('nexus', { siteId: 'your-site-id', bearerToken: 'your-token' }); * const nexus = new NexusClient(http); * * // Create a bin transfer * const binTransfer = await nexus.binTransfers.create({ * usersId: 1001, * locationId: 5.0, * transfers: [{ * lineNo: 1.0, * invMastUid: 67890, * itemId: 'ITEM001', * toBin: 'A1-01', * fromBin: 'B2-05', * lot: 'LOT123', * uom: 'EA', * quantity: 10.0 * }] * }); * * // Create a receiving document * const receiving = await nexus.receivings.create({ * poNo: 12345.0, * referenceNo: 'REF001', * jsonData: JSON.stringify({ items: [{ itemId: 'ITEM001', quantity: 100 }] }) * }); * ``` */ export class NexusClient extends BaseServiceClient { /** * Create a new NexusClient instance * @param http Configured HTTPClient instance * @param baseUrl Base URL for the Nexus API (default: https://nexus.augur-api.com) */ constructor(http, baseUrl = 'https://nexus.augur-api.com') { super('nexus', http, baseUrl); /** * Health monitoring endpoints * @description Methods for checking service availability and health status */ this.health = { /** * Simple health check endpoint that doesn't require authentication * @description Returns "pong" response for basic connectivity testing * @fullPath api.nexus.health.ping * @service nexus * @domain service-monitoring * @dataMethod N/A (simple response) * @discoverable true * @searchTerms ["ping", "health check", "connectivity test", "service alive", "basic health"] * @relatedEndpoints ["api.nexus.health.check"] * @commonPatterns ["Test service connectivity", "Basic health check", "Ping service"] * @returns Simple pong response * @throws ValidationError When response is malformed * @example * ```typescript * const pong = await client.health.ping(); * console.log(pong.data); // "pong" * ``` */ ping: this.createPingMethod(PingResponseSchema), /** * Comprehensive health check with authentication and site validation * @description Validates authentication, site configuration, and service health * @fullPath api.nexus.health.check * @service nexus * @domain service-monitoring * @dataMethod N/A (returns health data) * @discoverable true * @searchTerms ["health check", "service health", "authentication check", "site validation", "comprehensive health"] * @relatedEndpoints ["api.nexus.health.ping"] * @commonPatterns ["Check service health", "Validate authentication", "Full health status"] * @returns Health check response with site information * @throws ValidationError When response is malformed * @example * ```typescript * const health = await client.health.check(); * console.log('Site:', health.data.siteId, 'Hash:', health.data.siteHash); * ``` */ check: this.createHealthCheckMethod(HealthCheckResponseSchema), }; /** * Health monitoring data-only endpoints * @description Data-only methods that return just the data portion of health responses */ this.healthData = { /** * Simple health check data only * @description Returns only the data portion of ping response * @fullPath api.nexus.healthData.ping * @service nexus * @domain service-monitoring * @discoverable true * @searchTerms ["ping data", "connectivity data", "service alive data"] * @relatedEndpoints ["api.nexus.health.ping"] * @commonPatterns ["Test connectivity without metadata"] * @returns Ping data only */ ping: async () => { const response = await this.health.ping(); return response.data; }, /** * Comprehensive health check data only * @description Returns only the data portion of health check response * @fullPath api.nexus.healthData.check * @service nexus * @domain service-monitoring * @discoverable true * @searchTerms ["health data", "service status data", "health check data only"] * @relatedEndpoints ["api.nexus.health.check"] * @commonPatterns ["Get health status without metadata"] * @returns Health check data only */ check: async () => { const response = await this.health.check(); return response.data; }, }; /** * Bin Transfer endpoints * @description Methods for managing bin transfers - movement of inventory between bins within the same location */ this.binTransfers = { /** * Retrieve a list of bin transfer headers with optional filtering * @description Returns all bin transfer headers with pagination and status filtering support * @fullPath api.nexus.binTransfers.list * @service nexus * @domain warehouse-management * @dataMethod listData * @discoverable true * @searchTerms ["bin transfers", "inventory movement", "warehouse transfers", "bin to bin", "list transfers"] * @relatedEndpoints ["api.nexus.binTransfers.get", "api.nexus.binTransfers.getBinTransferStatus", "api.nexus.binTransfers.create"] * @commonPatterns ["List all bin transfers", "Get transfer history", "Find transfers by status"] * @param params Optional filtering and pagination parameters * @returns Array of bin transfer headers * @throws ValidationError When parameters are invalid or response is malformed * @example * ```typescript * const transfers = await client.binTransfers.list({ limit: 20, statusCd: 704 }); * transfers.data.forEach(transfer => { * console.log(`Transfer ${transfer.binTransferHdrUid}: Status ${transfer.statusCd}`); * }); * ``` */ list: this.createListMethod('/bin-transfer', BinTransferListParamsSchema, BinTransferListResponseSchema), /** * Retrieve details for a specific bin transfer header * @description Returns complete details for a bin transfer including JSON data and properties * @fullPath api.nexus.binTransfers.get * @service nexus * @domain warehouse-management * @dataMethod getData * @discoverable true * @searchTerms ["get bin transfer", "transfer details", "bin transfer by id", "transfer header"] * @relatedEndpoints ["api.nexus.binTransfers.list", "api.nexus.binTransfers.getBinTransferStatus", "api.nexus.binTransfers.update"] * @commonPatterns ["Get transfer details by ID", "View specific bin transfer", "Retrieve transfer information"] * @param binTransferHdrUid Bin transfer header unique identifier * @returns Complete bin transfer details * @throws ValidationError When response is malformed * @example * ```typescript * const transfer = await client.binTransfers.get(12345); * console.log('Transfer details:', transfer.data.jsonData); * console.log('Users ID:', transfer.data.usersId); * ``` */ get: this.createGetMethod('/bin-transfer/{binTransferHdrUid}', BinTransferGetResponseSchema), /** * Retrieve bin transfer status with detailed line items * @description Returns complete bin transfer header with associated line items for status checking * @fullPath api.nexus.binTransfers.getBinTransferStatus * @service nexus * @domain warehouse-management * @dataMethod getBinTransferStatusData * @discoverable true * @searchTerms ["bin transfer status", "transfer line items", "transfer progress", "bin transfer details with lines"] * @relatedEndpoints ["api.nexus.binTransfers.get", "api.nexus.binTransfers.list", "api.nexus.binTransfers.update"] * @commonPatterns ["Check transfer status", "View transfer line items", "Get transfer progress"] * @param binTransferHdrUid Bin transfer header unique identifier * @returns Bin transfer with line items * @throws ValidationError When response is malformed * @example * ```typescript * const status = await client.binTransfers.getBinTransferStatus(12345); * console.log('Transfer lines:', status.data.lines?.length || 0); * if (status.data.lines) { * status.data.lines.forEach(line => { * console.log(`Line ${line.lineNo}: ${line.itemId} from ${line.fromBin} to ${line.toBin}`); * }); * } * ``` */ getBinTransferStatus: this.createGetMethod('/bin-transfer/{binTransferHdrUid}/status', BinTransferStatusResponseSchema), /** * Create a new bin transfer header with associated line items * @description Creates a bin transfer with complete transfer line items for inventory movement * @fullPath api.nexus.binTransfers.create * @service nexus * @domain warehouse-management * @dataMethod createData * @discoverable true * @searchTerms ["create bin transfer", "new transfer", "move inventory", "bin to bin transfer", "inventory movement"] * @relatedEndpoints ["api.nexus.binTransfers.list", "api.nexus.binTransfers.get", "api.nexus.binTransfers.update"] * @commonPatterns ["Create new bin transfer", "Move items between bins", "Start inventory transfer"] * @param transferData Complete bin transfer data including user, location, and transfer lines * @returns Created bin transfer header details * @throws ValidationError When request is invalid or response is malformed * @example * ```typescript * const transfer = await client.binTransfers.create({ * usersId: 1001, * locationId: 5.0, * requestId: 'req_12346', * transfers: [{ * lineNo: 1.0, * invMastUid: 67890, * itemId: 'ITEM001', * toBin: 'A1-01', * fromBin: 'B2-05', * lot: 'LOT123', * uom: 'EA', * moveAvailable: 'Y', * quantity: 10.0 * }] * }); * ``` */ create: this.createCreateMethod('/bin-transfer', BinTransferCreateRequestSchema, BinTransferCreateResponseSchema), /** * Update an existing bin transfer header * @description Updates bin transfer status, process codes, and additional data * @fullPath api.nexus.binTransfers.update * @service nexus * @domain warehouse-management * @dataMethod updateData * @discoverable true * @searchTerms ["update bin transfer", "modify transfer", "change transfer status", "update transfer"] * @relatedEndpoints ["api.nexus.binTransfers.get", "api.nexus.binTransfers.getBinTransferStatus", "api.nexus.binTransfers.delete"] * @commonPatterns ["Update transfer status", "Modify bin transfer", "Change transfer details"] * @param binTransferHdrUid Bin transfer header unique identifier * @param updateData Fields to update on the bin transfer * @returns Updated bin transfer details * @throws ValidationError When request is invalid or response is malformed * @example * ```typescript * const updated = await client.binTransfers.update(12346, { * statusCd: 705, * processCd: 705, * properties: JSON.stringify({ notes: 'Transfer in progress' }) * }); * ``` */ update: this.createUpdateMethod('/bin-transfer/{binTransferHdrUid}', BinTransferUpdateRequestSchema, BinTransferUpdateResponseSchema), /** * Soft delete a bin transfer header * @description Marks a bin transfer as deleted by setting status code to 700 * @fullPath api.nexus.binTransfers.delete * @service nexus * @domain warehouse-management * @dataMethod deleteData * @discoverable true * @searchTerms ["delete bin transfer", "remove transfer", "cancel transfer", "soft delete"] * @relatedEndpoints ["api.nexus.binTransfers.get", "api.nexus.binTransfers.list", "api.nexus.binTransfers.update"] * @commonPatterns ["Delete bin transfer", "Cancel transfer", "Remove transfer record"] * @param binTransferHdrUid Bin transfer header unique identifier * @returns Deleted bin transfer details with updated status * @throws ValidationError When response is malformed * @example * ```typescript * const deleted = await client.binTransfers.delete(12346); * console.log('Transfer deleted, status:', deleted.data.statusCd); // Should be 700 * ``` */ delete: this.createDeleteMethod('/bin-transfer/{binTransferHdrUid}', BinTransferDeleteResponseSchema), /** * Retrieve a list of bin transfer headers with optional filtering (data only) * @description Returns only the data array from bin transfer headers response * @param params Optional filtering and pagination parameters * @returns Array of bin transfer headers (data only) * @throws ValidationError When parameters are invalid or response is malformed * @example * ```typescript * const transfersData = await client.binTransfers.listData({ limit: 20, statusCd: 704 }); * transfersData.forEach(transfer => { * console.log(`Transfer ${transfer.binTransferHdrUid}: Status ${transfer.statusCd}`); * }); * ``` */ listData: async (params) => { const response = await this.binTransfers.list(params); return response.data; }, /** * Retrieve details for a specific bin transfer header (data only) * @description Returns only the data from bin transfer details response * @param binTransferHdrUid Bin transfer header unique identifier * @returns Bin transfer details (data only) * @throws ValidationError When response is malformed * @example * ```typescript * const transferData = await client.binTransfers.getData(12345); * console.log('Transfer details:', transferData.jsonData); * ``` */ getData: async (binTransferHdrUid) => { const response = await this.binTransfers.get(binTransferHdrUid); return response.data; }, /** * Retrieve bin transfer status with detailed line items (data only) * @description Returns only the data from bin transfer status response * @param binTransferHdrUid Bin transfer header unique identifier * @returns Bin transfer with line items (data only) * @throws ValidationError When response is malformed * @example * ```typescript * const statusData = await client.binTransfers.getBinTransferStatusData(12345); * console.log('Transfer lines:', statusData.lines?.length || 0); * ``` */ getBinTransferStatusData: async (binTransferHdrUid) => { const response = await this.binTransfers.getBinTransferStatus(binTransferHdrUid); return response.data; }, /** * Create a new bin transfer header with associated line items (data only) * @description Returns only the data from created bin transfer response * @param transferData Complete bin transfer data including user, location, and transfer lines * @returns Created bin transfer header details (data only) * @throws ValidationError When request is invalid or response is malformed */ createData: async (transferData) => { const response = await this.binTransfers.create(transferData); return response.data; }, /** * Update an existing bin transfer header (data only) * @description Returns only the data from updated bin transfer response * @param binTransferHdrUid Bin transfer header unique identifier * @param updateData Fields to update on the bin transfer * @returns Updated bin transfer details (data only) * @throws ValidationError When request is invalid or response is malformed */ updateData: async (binTransferHdrUid, updateData) => { const response = await this.binTransfers.update(binTransferHdrUid, updateData); return response.data; }, /** * Soft delete a bin transfer header (data only) * @description Returns only the data from deleted bin transfer response * @param binTransferHdrUid Bin transfer header unique identifier * @returns Deleted bin transfer details (data only) * @throws ValidationError When response is malformed */ deleteData: async (binTransferHdrUid) => { const response = await this.binTransfers.delete(binTransferHdrUid); return response.data; }, }; /** * Receiving endpoints * @description Methods for managing receiving operations - purchase order receipts and inventory receiving processes */ this.receivings = { /** * Retrieve a list of receiving documents with optional filtering * @description Returns receiving documents with pagination and filtering by PO number or status * @fullPath api.nexus.receivings.list * @service nexus * @domain warehouse-management * @dataMethod listData * @discoverable true * @searchTerms ["receiving documents", "purchase order receipts", "receiving list", "PO receipts", "inbound inventory"] * @relatedEndpoints ["api.nexus.receivings.get", "api.nexus.receivings.create", "api.nexus.purchaseOrderReceipts.list"] * @commonPatterns ["List all receiving documents", "Get receiving history", "Find receipts by PO number"] * @param params Optional filtering and pagination parameters * @returns Array of receiving documents * @throws ValidationError When parameters are invalid or response is malformed * @example * ```typescript * const receivings = await client.receivings.list({ limit: 50, poNo: 12345, statusCd: 704 }); * receivings.data.forEach(receiving => { * console.log(`Receiving ${receiving.receivingUid}: PO ${receiving.poNo}`); * }); * ``` */ list: this.createListMethod('/receiving', ReceivingListParamsSchema, ReceivingListResponseSchema), /** * Retrieve details for a specific receiving document * @description Returns complete details for a receiving document including JSON data and properties * @fullPath api.nexus.receivings.get * @service nexus * @domain warehouse-management * @dataMethod getData * @discoverable true * @searchTerms ["get receiving", "receiving details", "receiving by id", "receipt details"] * @relatedEndpoints ["api.nexus.receivings.list", "api.nexus.receivings.update", "api.nexus.purchaseOrderReceipts.get"] * @commonPatterns ["Get receiving details by ID", "View specific receipt", "Retrieve receiving information"] * @param receivingUid Receiving unique identifier * @returns Complete receiving document details * @throws ValidationError When response is malformed * @example * ```typescript * const receiving = await client.receivings.get(54321); * console.log('Receiving details:', receiving.data.jsonData); * console.log('PO Number:', receiving.data.poNo); * ``` */ get: this.createGetMethod('/receiving/{receivingUid}', ReceivingGetResponseSchema), /** * Create a new receiving document * @description Creates a receiving document for purchase order receipt processing * @fullPath api.nexus.receivings.create * @service nexus * @domain warehouse-management * @dataMethod createData * @discoverable true * @searchTerms ["create receiving", "new receipt", "receive inventory", "PO receipt", "inbound processing"] * @relatedEndpoints ["api.nexus.receivings.list", "api.nexus.receivings.get", "api.nexus.purchaseOrderReceipts.create"] * @commonPatterns ["Create new receiving document", "Process PO receipt", "Start receiving process"] * @param receivingData Complete receiving data including PO number and optional details * @returns Created receiving document details * @throws ValidationError When request is invalid or response is malformed * @example * ```typescript * const receiving = await client.receivings.create({ * poNo: 12345.0, * referenceNo: 'REF002', * requestId: 'req_recv_002', * jsonData: JSON.stringify({ items: [{ itemId: 'ITEM001', quantity: 100 }] }), * properties: JSON.stringify({ supplier: 'ACME Corp', expectedDate: '2024-01-02' }) * }); * ``` */ create: this.createCreateMethod('/receiving', ReceivingCreateRequestSchema, ReceivingCreateResponseSchema), /** * Update an existing receiving document * @description Updates receiving status, process codes, messages, and tracking information * @fullPath api.nexus.receivings.update * @service nexus * @domain warehouse-management * @dataMethod updateData * @discoverable true * @searchTerms ["update receiving", "modify receiving", "change receiving status", "update receipt", "receiving modification"] * @relatedEndpoints ["api.nexus.receivings.get", "api.nexus.receivings.list", "api.nexus.receivings.delete"] * @commonPatterns ["Update receiving status", "Modify receiving details", "Change receiving properties"] * @workflow ["receiving-processing", "status-updates", "receipt-management"] * @prerequisites ["Valid receiving ID", "Update permissions", "Proper status transitions"] * @nextSteps ["api.nexus.receivings.get for verification", "Related processing workflows"] * @businessRules ["Status changes must follow valid transitions", "Updates create audit trail entries", "Some fields may be immutable"] * @functionalArea "warehouse-management" * @param receivingUid Receiving unique identifier * @param updateData Fields to update on the receiving document * @returns Updated receiving details * @throws ValidationError When request is invalid or response is malformed * @example * ```typescript * const updated = await client.receivings.update(54322, { * statusCd: 705, * processCd: 705, * processMessage: 'Processing receipt', * jsonData: JSON.stringify({ status: 'in_progress' }) * }); * ``` */ update: this.createUpdateMethod('/receiving/{receivingUid}', ReceivingUpdateRequestSchema, ReceivingUpdateResponseSchema), /** * Soft delete a receiving document * @description Marks a receiving document as deleted by setting status code to 700 * @fullPath api.nexus.receivings.delete * @service nexus * @domain warehouse-management * @dataMethod deleteData * @discoverable true * @searchTerms ["delete receiving", "remove receiving", "cancel receiving", "soft delete receipt"] * @relatedEndpoints ["api.nexus.receivings.get", "api.nexus.receivings.list", "api.nexus.receivings.update"] * @commonPatterns ["Delete receiving document", "Cancel receiving", "Remove receiving record"] * @workflow ["receiving-cancellation", "cleanup-processes", "audit-trail-maintenance"] * @prerequisites ["Valid receiving ID", "Delete permissions", "Receiving must be in deletable state"] * @nextSteps ["Cleanup related documents if needed", "Update related processes"] * @businessRules ["Soft delete preserves audit trail", "Status set to 700", "Related documents may need attention"] * @functionalArea "warehouse-management" * @param receivingUid Receiving unique identifier * @returns Deleted receiving details with updated status * @throws ValidationError When response is malformed * @example * ```typescript * const deleted = await client.receivings.delete(54322); * console.log('Receiving deleted, status:', deleted.data.statusCd); // Should be 700 * ``` */ delete: this.createDeleteMethod('/receiving/{receivingUid}', ReceivingDeleteResponseSchema), /** * Retrieve a list of receiving documents with optional filtering (data only) * @description Returns only the data array from receiving documents response * @param params Optional filtering and pagination parameters * @returns Array of receiving documents (data only) * @throws ValidationError When parameters are invalid or response is malformed */ listData: async (params) => { const response = await this.receivings.list(params); return response.data; }, /** * Retrieve details for a specific receiving document (data only) * @description Returns only the data from receiving document details response * @param receivingUid Receiving unique identifier * @returns Receiving document details (data only) * @throws ValidationError When response is malformed */ getData: async (receivingUid) => { const response = await this.receivings.get(receivingUid); return response.data; }, /** * Create a new receiving document (data only) * @description Returns only the data from created receiving document response * @param receivingData Complete receiving data including PO number and optional details * @returns Created receiving document details (data only) * @throws ValidationError When request is invalid or response is malformed */ createData: async (receivingData) => { const response = await this.receivings.create(receivingData); return response.data; }, /** * Update an existing receiving document (data only) * @description Returns only the data from updated receiving response * @param receivingUid Receiving unique identifier * @param updateData Fields to update on the receiving document * @returns Updated receiving details (data only) * @throws ValidationError When request is invalid or response is malformed */ updateData: async (receivingUid, updateData) => { const response = await this.receivings.update(receivingUid, updateData); return response.data; }, /** * Soft delete a receiving document (data only) * @description Returns only the data from deleted receiving response * @param receivingUid Receiving unique identifier * @returns Deleted receiving details (data only) * @throws ValidationError When response is malformed */ deleteData: async (receivingUid) => { const response = await this.receivings.delete(receivingUid); return response.data; }, }; /** * Transfer endpoints * @description Methods for managing general transfer operations for inventory movement between locations */ this.transfers = { /** * Retrieve a list of transfer documents with optional filtering * @description Returns transfer documents with pagination and filtering by reference number or status * @fullPath api.nexus.transfers.list * @service nexus * @domain warehouse-management * @dataMethod listData * @discoverable true * @searchTerms ["transfers", "location transfers", "inventory transfer", "warehouse transfer", "transfer documents"] * @relatedEndpoints ["api.nexus.transfers.get", "api.nexus.transfers.create", "api.nexus.transferReceipts.list"] * @commonPatterns ["List all transfers", "Get transfer history", "Find transfers by reference"] * @param params Optional filtering and pagination parameters * @returns Array of transfer documents * @throws ValidationError When parameters are invalid or response is malformed * @example * ```typescript * const transfers = await client.transfers.list({ limit: 25, referenceNo: 'TRF001' }); * transfers.data.forEach(transfer => { * console.log(`Transfer ${transfer.transferUid}: ${transfer.referenceNo}`); * }); * ``` */ list: this.createListMethod('/transfer', TransferListParamsSchema, TransferListResponseSchema), /** * Retrieve details for a specific transfer document * @description Returns complete details for a transfer document including JSON data * @fullPath api.nexus.transfers.get * @service nexus * @domain warehouse-management * @dataMethod getData * @discoverable true * @searchTerms ["get transfer", "transfer details", "transfer by id", "transfer document"] * @relatedEndpoints ["api.nexus.transfers.list", "api.nexus.transfers.update", "api.nexus.transferReceipts.get"] * @commonPatterns ["Get transfer details by ID", "View specific transfer", "Retrieve transfer information"] * @param transferUid Transfer unique identifier * @returns Complete transfer document details * @throws ValidationError When response is malformed * @example * ```typescript * const transfer = await client.transfers.get(98765); * console.log('Transfer details:', transfer.data.jsonData); * console.log('Reference:', transfer.data.referenceNo); * ``` */ get: this.createGetMethod('/transfer/{transferUid}', TransferGetResponseSchema), /** * Create a new transfer document * @description Creates a transfer document for inventory movement between locations * @fullPath api.nexus.transfers.create * @service nexus * @domain warehouse-management * @dataMethod createData * @discoverable true * @searchTerms ["create transfer", "new transfer", "location transfer", "inventory movement", "warehouse transfer"] * @relatedEndpoints ["api.nexus.transfers.list", "api.nexus.transfers.get", "api.nexus.transferReceipts.create"] * @commonPatterns ["Create new transfer", "Move inventory between locations", "Start transfer process"] * @param transferData Complete transfer data including reference and location details * @returns Created transfer document details * @throws ValidationError When request is invalid or response is malformed * @example * ```typescript * const transfer = await client.transfers.create({ * referenceNo: 'TRF002', * requestId: 'req_trf_002', * jsonData: JSON.stringify({ fromLocation: 'WAREHOUSE_A', toLocation: 'WAREHOUSE_B' }), * processMessage: 'Initial transfer request' * }); * ``` */ create: this.createCreateMethod('/transfer', TransferCreateRequestSchema, TransferCreateResponseSchema), /** * Update an existing transfer document * @description Updates transfer status, process codes, and messages * @param transferUid Transfer unique identifier * @param updateData Fields to update on the transfer document * @returns Updated transfer details * @throws ValidationError When request is invalid or response is malformed * @example * ```typescript * const updated = await client.transfers.update(98766, { * statusCd: 705, * processMessage: 'Transfer in progress' * }); * ``` */ update: this.createUpdateMethod('/transfer/{transferUid}', TransferUpdateRequestSchema, TransferUpdateResponseSchema), /** * Soft delete a transfer document * @description Marks a transfer document as deleted by setting status code to 700 * @param transferUid Transfer unique identifier * @returns Deleted transfer details with updated status * @throws ValidationError When response is malformed * @example * ```typescript * const deleted = await client.transfers.delete(98766); * console.log('Transfer deleted, status:', deleted.data.statusCd); // Should be 700 * ``` */ delete: this.createDeleteMethod('/transfer/{transferUid}', TransferDeleteResponseSchema), /** * Retrieve a list of transfer documents with optional filtering (data only) * @description Returns only the data array from transfer documents response * @param params Optional filtering and pagination parameters * @returns Array of transfer documents (data only) * @throws ValidationError When parameters are invalid or response is malformed */ listData: async (params) => { const response = await this.transfers.list(params); return response.data; }, /** * Retrieve details for a specific transfer document (data only) * @description Returns only the data from transfer document details response * @param transferUid Transfer unique identifier * @returns Transfer document details (data only) * @throws ValidationError When response is malformed */ getData: async (transferUid) => { const response = await this.transfers.get(transferUid); return response.data; }, /** * Create a new transfer document (data only) * @description Returns only the data from created transfer document response * @param transferData Complete transfer data including reference and location details * @returns Created transfer document details (data only) * @throws ValidationError When request is invalid or response is malformed */ createData: async (transferData) => { const response = await this.transfers.create(transferData); return response.data; }, /** * Update an existing transfer document (data only) * @description Returns only the data from updated transfer response * @param transferUid Transfer unique identifier * @param updateData Fields to update on the transfer document * @returns Updated transfer details (data only) * @throws ValidationError When request is invalid or response is malformed */ updateData: async (transferUid, updateData) => { const response = await this.transfers.update(transferUid, updateData); return response.data; }, /** * Soft delete a transfer document (data only) * @description Returns only the data from deleted transfer response * @param transferUid Transfer unique identifier * @returns Deleted transfer details (data only) * @throws ValidationError When response is malformed */ deleteData: async (transferUid) => { const response = await this.transfers.delete(transferUid); return response.data; }, }; /** * Purchase Order Receipt endpoints * @description Methods for managing purchase order receipt documents for comprehensive receipt tracking and processing */ this.purchaseOrderReceipts = { /** * Retrieve a list of purchase order receipt documents with optional filtering * @description Returns purchase order receipts with pagination and filtering by PO number, status, or receipt date * @fullPath api.nexus.purchaseOrderReceipts.list * @service nexus * @domain warehouse-management * @dataMethod listData * @discoverable true * @searchTerms ["purchase order receipts", "PO receipts", "receipt documents", "receiving receipts", "purchase receipts"] * @relatedEndpoints ["api.nexus.purchaseOrderReceipts.get", "api.nexus.purchaseOrderReceipts.create", "api.nexus.receivings.list"] * @commonPatterns ["List all PO receipts", "Get receipt history", "Find receipts by PO number"] * @workflow ["purchase-order-processing", "receiving-workflow", "receipt-management"] * @prerequisites ["Valid authentication token", "Warehouse management permissions"] * @nextSteps ["api.nexus.purchaseOrderReceipts.get for details", "api.nexus.purchaseOrderReceipts.update for modifications"] * @businessRules ["Receipts tied to specific PO numbers", "Status codes indicate processing stage", "Pagination required for large datasets"] * @functionalArea "purchase-order-and-receipt-management" * @caching "Cache for 10 minutes, invalidate on receipt changes" * @performance "Supports filtering by PO number for faster searches" * @param params Optional filtering and pagination parameters * @returns Array of purchase order receipt documents * @throws ValidationError When parameters are invalid or response is malformed * @example * ```typescript * const receipts = await client.purchaseOrderReceipts.list({ limit: 30, poNo: 67890 }); * receipts.data.forEach(receipt => { * console.log(`Receipt ${receipt.purchaseOrderReceiptUid}: PO ${receipt.poNo}`); * }); * ``` */ list: this.createListMethod('/purchase-order-receipt', PurchaseOrderReceiptListParamsSchema, PurchaseOrderReceiptListResponseSchema), /** * Retrieve details for a specific purchase order receipt document * @description Returns complete details for a purchase order receipt including JSON data and tracking information * @fullPath api.nexus.purchaseOrderReceipts.get * @service nexus * @domain warehouse-management * @dataMethod getData * @discoverable true * @searchTerms ["get PO receipt", "receipt details", "purchase order receipt by id", "receipt document"] * @relatedEndpoints ["api.nexus.purchaseOrderReceipts.list", "api.nexus.purchaseOrderReceipts.update", "api.nexus.receivings.get"] * @commonPatterns ["Get receipt details by ID", "View specific PO receipt", "Retrieve receipt information"] * @workflow ["receipt-verification", "purchase-order-processing", "audit-trail"] * @prerequisites ["Valid receipt ID", "Read permissions for receipts"] * @nextSteps ["api.nexus.purchaseOrderReceipts.update for modifications", "api.nexus.receivings.get for receiving details"] * @businessRules ["Receipt must exist and be accessible", "Includes complete audit trail"] * @functionalArea "purchase-order-and-receipt-management" * @param purchaseOrderReceiptUid Purchase order receipt unique identifier * @returns Complete purchase order receipt details * @throws ValidationError When response is malformed * @example * ```typescript * const receipt = await client.purchaseOrderReceipts.get(98765); * console.log('Receipt details:', receipt.data.jsonData); * console.log('PO Number:', receipt.data.poNo); * ``` */ get: this.createGetMethod('/purchase-order-receipt/{purchaseOrderReceiptUid}', PurchaseOrderReceiptGetResponseSchema), /** * Create a new purchase order receipt document * @description Creates a purchase order receipt document for comprehensive tracking and audit trail * @fullPath api.nexus.purchaseOrderReceipts.create * @service nexus * @domain warehouse-management * @dataMethod createData * @discoverable true * @searchTerms ["create PO receipt", "new receipt", "purchase order receipt", "receipt creation", "document receipt"] * @relatedEndpoints ["api.nexus.purchaseOrderReceipts.list", "api.nexus.purchaseOrderReceipts.get", "api.nexus.receivings.create"] * @commonPatterns ["Create new PO receipt", "Document receipt process", "Start receipt tracking"] * @workflow ["receipt-creation", "purchase-order-processing", "document-generation"] * @prerequisites ["Valid PO information", "Receipt creation permissions", "Required receipt data"] * @nextSteps ["api.nexus.purchaseOrderReceipts.get for verification", "api.nexus.purchaseOrderReceipts.update for status changes"] * @businessRules ["Must include valid PO reference", "Receipt data structure must be valid", "Creates audit trail entry"] * @functionalArea "purchase-order-and-receipt-management" * @param receiptData Complete purchase order receipt data * @returns Created purchase order receipt details * @throws ValidationError When request is invalid or response is malformed * @example * ```typescript * const receipt = await client.purchaseOrderReceipts.create({ * poNo: 67890, * referenceNo: 'RECEIPT001', * jsonData: JSON.stringify({ items: [{ itemId: 'ITEM001', receivedQty: 50 }] }), * properties: JSON.stringify({ supplier: 'ABC Supply', receiptDate: '2024-01-15' }) * }); * ``` */ create: this.createCreateMethod('/purchase-order-receipt', PurchaseOrderReceiptCreateRequestSchema, PurchaseOrderReceiptCreateResponseSchema), /** * Update an existing purchase order receipt document * @description Updates purchase order receipt status, properties, and tracking information * @fullPath api.nexus.purchaseOrderReceipts.update * @service nexus * @domain warehouse-management * @dataMethod updateData * @discoverable true * @searchTerms ["update PO receipt", "modify receipt", "change receipt status", "update receipt", "receipt modification"] * @relatedEndpoints ["api.nexus.purchaseOrderReceipts.get", "api.nexus.purchaseOrderReceipts.list", "api.nexus.purchaseOrderReceipts.delete"] * @commonPatterns ["Update receipt status", "Modify receipt details", "Change receipt properties"] * @workflow ["receipt-processing", "status-updates", "audit-trail-maintenance"] * @prerequisites ["Valid receipt ID", "Update permissions", "Proper status transitions"] * @nextSteps ["api.nexus.purchaseOrderReceipts.get for verification", "Related processing workflows"] * @businessRules ["Status changes must follow valid transitions", "Updates create audit trail entries", "Some fields may be immutable"] * @functionalArea "purchase-order-and-receipt-management" * @param purchaseOrderReceiptUid Purchase order receipt unique identifier * @param updateData Fields to update on the purchase order receipt * @returns Updated purchase order receipt details * @throws ValidationError When