@simpleapps-com/augur-api
Version:
TypeScript client library for Augur microservices API endpoints
75 lines • 4.36 kB
JavaScript
import { RatesRequestParamsSchema, RatesResponseSchema } from '../schemas';
/**
* Creates the rates resource methods
* OpenAPI Path: /rates → rates.*
* @description Shipping rate calculation endpoint for multi-carrier comparison
*/
export function createRatesResource(executeRequest) {
return {
/**
* Get comprehensive shipping rates from multiple carriers
*
* @fullPath api.shipping.rates.create
* @service shipping
* @domain shipping-and-logistics
* @dataMethod ratesData.create
* @discoverable true
* @searchTerms ["shipping rates", "calculate cost", "carrier comparison", "freight quotes", "delivery cost", "ups", "fedex", "usps", "dhl", "shipping options"]
* @relatedEndpoints ["api.logistics.speedship.freight.get", "api.commerce.cart.shipping.calculate", "api.orders.shipping.estimate", "api.customers.addresses.validate"]
* @commonPatterns ["Calculate shipping cost", "Compare carrier rates", "Get delivery options", "Estimate shipping", "Find cheapest option", "Get fastest delivery"]
* @workflow ["e-commerce-checkout", "order-fulfillment", "shipping-estimation", "cost-analysis", "carrier-selection", "delivery-planning"]
* @prerequisites ["Valid shipping addresses", "Package dimensions and weight", "Valid authentication token", "x-site-id header", "Carrier API access"]
* @nextSteps ["Select shipping option", "Create shipping label", "Track shipment", "Update order with shipping cost", "Process payment with shipping"]
* @businessRules ["Requires complete address information", "Package weight/dimensions mandatory", "Supports multiple packages", "Returns carrier-specific rates", "Includes all fees and surcharges"]
* @functionalArea "shipping-and-logistics"
* @crossSite "Supports multi-site shipping configurations and carrier accounts"
* @caching "Cache rates for 15 minutes, invalidate on address or package changes"
* @performance "Parallel carrier API calls, use response format to optimize data size, supports pagination for large results"
*
* @param params Comprehensive shipping rate request with origin, destination, and package details
* @returns Promise<RatesResponse> Complete shipping rates from multiple carriers with detailed analysis
*/
create: async (params) => {
return executeRequest({
method: 'POST',
path: '/rates',
paramsSchema: RatesRequestParamsSchema,
responseSchema: RatesResponseSchema,
}, params);
},
};
}
/**
* Creates the ratesData resource methods (data-only versions)
*/
export function createRatesDataResource(rates) {
return {
/**
* Get shipping rates data without full response metadata
*
* @fullPath api.shipping.ratesData.create
* @service shipping
* @domain shipping-and-logistics
* @dataMethod ratesData
* @discoverable true
* @searchTerms ["rates data", "shipping cost", "carrier quotes", "delivery prices", "freight data"]
* @relatedEndpoints ["api.shipping.rates.create", "api.logistics.speedship.freight.get"]
* @commonPatterns ["Get rates data", "Calculate shipping cost", "Compare carrier options"]
* @workflow ["e-commerce-checkout", "order-fulfillment", "shipping-estimation"]
* @prerequisites ["Valid shipping addresses", "Package details", "Valid authentication token"]
* @nextSteps ["Select shipping option", "Create shipping label", "Process payment"]
* @businessRules ["Returns only rates data", "No response metadata included", "Direct access to rate comparison"]
* @functionalArea "shipping-and-logistics"
* @caching "Cache rates for 15 minutes"
* @performance "Direct data access, optimal for rate comparisons and integrations"
*
* @param params Comprehensive shipping rate request parameters
* @returns Promise<RatesData> Direct shipping rates data without response wrapper
*/
create: async (params) => {
const response = await rates.create(params);
return response.data;
},
};
}
//# sourceMappingURL=rates.js.map