autotrader-connect-api
Version:
Production-ready TypeScript wrapper for Auto Trader UK Connect APIs
168 lines • 6.79 kB
JavaScript
/**
* 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