@simpleapps-com/augur-api
Version:
TypeScript client library for Augur microservices API endpoints
841 lines • 77.7 kB
JavaScript
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