// New method in easypost.ts
async bulkTrackShipments(params: BulkTrackShipmentsParams): Promise<any> {
try {
if (!params.tracking_codes || !Array.isArray(params.tracking_codes)) {
throw new ValidationError('tracking_codes array is required');
}
const results = [];
for (const trackingCode of params.tracking_codes) {
try {
const tracker = await client.trackShipment(trackingCode);
results.push({
tracking_code: tracker.tracking_code,
status: tracker.status,
carrier: tracker.carrier,
signed_by: tracker.signed_by,
weight: tracker.weight,
est_delivery_date: tracker.est_delivery_date,
tracking_details: tracker.tracking_details.slice(-3) // Last 3 events
});
} catch (trackError) {
results.push({
tracking_code: trackingCode,
error: 'Failed to track shipment'
});
}
}
return { tracking_results: results };
} catch (error) {
logger.error('Error in easypost.bulkTrackShipments', { error });
if (error instanceof RpcBaseError) throw error;
throw new RpcBaseError('EASYPOST_BULK_TRACK_SHIPMENTS_ERROR', 'Failed to bulk track shipments', error);
}
}