UNPKG

autotrader-connect-api

Version:

Production-ready TypeScript wrapper for Auto Trader UK Connect APIs

168 lines 6.79 kB
/** * Vehicles module for AutoTrader API * Handles vehicle-related endpoints and operations */ import client from '../client'; /** * Get a specific vehicle by registration and advertiser ID * @param registration Vehicle registration number * @param advertiserId Advertiser/dealer ID * @returns Promise resolving to vehicle data */ export async function getVehicle(registration, advertiserId) { const response = await client.get('/vehicles', { params: { registration, advertiserId, }, }); return response.data; } /** * Get vehicle by ID * @param vehicleId Unique vehicle identifier * @returns Promise resolving to vehicle data */ export async function getVehicleById(vehicleId) { const response = await client.get(`/vehicles/${vehicleId}`); return response.data; } /** * Search for vehicles with various filters * @param params Search parameters and filters * @returns Promise resolving to paginated vehicle results */ export async function searchVehicles(params = {}) { const response = await client.get('/vehicles/search', { params: { // Basic filters make: Array.isArray(params.make) ? params.make.join(',') : params.make, model: Array.isArray(params.model) ? params.model.join(',') : params.model, variant: Array.isArray(params.variant) ? params.variant.join(',') : params.variant, // Year range yearFrom: params.yearRange?.min, yearTo: params.yearRange?.max, // Price range priceFrom: params.priceRange?.min, priceTo: params.priceRange?.max, // Mileage range mileageFrom: params.mileageRange?.min, mileageTo: params.mileageRange?.max, // Type filters condition: Array.isArray(params.condition) ? params.condition.join(',') : params.condition, fuelType: Array.isArray(params.fuelType) ? params.fuelType.join(',') : params.fuelType, transmission: Array.isArray(params.transmission) ? params.transmission.join(',') : params.transmission, bodyType: Array.isArray(params.bodyType) ? params.bodyType.join(',') : params.bodyType, // Specification filters doors: Array.isArray(params.doors) ? params.doors.join(',') : params.doors, seats: Array.isArray(params.seats) ? params.seats.join(',') : params.seats, engineSizeFrom: params.engineSizeRange?.min, engineSizeTo: params.engineSizeRange?.max, powerFrom: params.powerRange?.min, powerTo: params.powerRange?.max, // Location filters postcode: params.postcode, radius: params.radius, // Advertiser/dealer filters - prioritize advertiserId advertiserId: Array.isArray(params.advertiserId) ? params.advertiserId.join(',') : params.advertiserId, advertiserName: Array.isArray(params.advertiserName) ? params.advertiserName.join(',') : params.advertiserName, dealerId: Array.isArray(params.dealerId) ? params.dealerId.join(',') : params.dealerId, // Legacy support dealerType: params.dealerType, // Feature filters features: Array.isArray(params.features) ? params.features.join(',') : params.features, keyFeatures: Array.isArray(params.keyFeatures) ? params.keyFeatures.join(',') : params.keyFeatures, // Availability filters availableFrom: params.availableDateRange?.from, availableTo: params.availableDateRange?.to, financingAvailable: params.financingAvailable, partExchangeAccepted: params.partExchangeAccepted, homeDeliveryAvailable: params.homeDeliveryAvailable, warrantyIncluded: params.warrantyIncluded, // Advanced filters excludeWriteOffs: params.excludeWriteOffs, includeImports: params.includeImports, photosOnly: params.photosOnly, // Sorting and pagination sortBy: params.sortBy || 'relevance', sortOrder: params.sortOrder || 'desc', page: params.page || 1, pageSize: params.pageSize || 25, }, }); return response; } /** * Get featured vehicles * @param limit Maximum number of vehicles to return * @returns Promise resolving to array of featured vehicles */ export async function getFeaturedVehicles(limit = 10) { const response = await client.get('/vehicles/featured', { params: { limit }, }); return response.data; } /** * Get similar vehicles to a given vehicle * @param vehicleId Reference vehicle ID * @param limit Maximum number of similar vehicles to return * @returns Promise resolving to array of similar vehicles */ export async function getSimilarVehicles(vehicleId, limit = 10) { const response = await client.get(`/vehicles/${vehicleId}/similar`, { params: { limit }, }); return response.data; } /** * Get vehicle recommendations based on search criteria * @param params Search parameters to base recommendations on * @param limit Maximum number of recommendations to return * @returns Promise resolving to array of recommended vehicles */ export async function getVehicleRecommendations(params, limit = 10) { const response = await client.get('/vehicles/recommendations', { params: { ...params, limit, }, }); return response.data; } /** * Get vehicle pricing history * @param vehicleId Vehicle identifier * @returns Promise resolving to pricing history data */ export async function getVehiclePricingHistory(vehicleId) { const response = await client.get(`/vehicles/${vehicleId}/pricing-history`); return response.data; } /** * Get vehicle market analysis * @param vehicleId Vehicle identifier * @returns Promise resolving to market analysis data */ export async function getVehicleMarketAnalysis(vehicleId) { const response = await client.get(`/vehicles/${vehicleId}/market-analysis`); return response.data; } /** * Get vehicle specifications and features * @param vehicleId Vehicle identifier * @returns Promise resolving to detailed specifications */ export async function getVehicleSpecifications(vehicleId) { const response = await client.get(`/vehicles/${vehicleId}/specifications`); return response.data; } /** * Check vehicle availability * @param vehicleId Vehicle identifier * @returns Promise resolving to availability information */ export async function checkVehicleAvailability(vehicleId) { const response = await client.get(`/vehicles/${vehicleId}/availability`); return response.data; } //# sourceMappingURL=vehicles.js.map