autotrader-connect-api
Version:
Production-ready TypeScript wrapper for Auto Trader UK Connect APIs
184 lines • 7.9 kB
JavaScript
"use strict";
/**
* Vehicles module for AutoTrader API
* Handles vehicle-related endpoints and operations
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.checkVehicleAvailability = exports.getVehicleSpecifications = exports.getVehicleMarketAnalysis = exports.getVehiclePricingHistory = exports.getVehicleRecommendations = exports.getSimilarVehicles = exports.getFeaturedVehicles = exports.searchVehicles = exports.getVehicleById = exports.getVehicle = void 0;
const client_1 = __importDefault(require("../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
*/
async function getVehicle(registration, advertiserId) {
const response = await client_1.default.get('/vehicles', {
params: {
registration,
advertiserId,
},
});
return response.data;
}
exports.getVehicle = getVehicle;
/**
* Get vehicle by ID
* @param vehicleId Unique vehicle identifier
* @returns Promise resolving to vehicle data
*/
async function getVehicleById(vehicleId) {
const response = await client_1.default.get(`/vehicles/${vehicleId}`);
return response.data;
}
exports.getVehicleById = getVehicleById;
/**
* Search for vehicles with various filters
* @param params Search parameters and filters
* @returns Promise resolving to paginated vehicle results
*/
async function searchVehicles(params = {}) {
const response = await client_1.default.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;
}
exports.searchVehicles = searchVehicles;
/**
* Get featured vehicles
* @param limit Maximum number of vehicles to return
* @returns Promise resolving to array of featured vehicles
*/
async function getFeaturedVehicles(limit = 10) {
const response = await client_1.default.get('/vehicles/featured', {
params: { limit },
});
return response.data;
}
exports.getFeaturedVehicles = getFeaturedVehicles;
/**
* 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
*/
async function getSimilarVehicles(vehicleId, limit = 10) {
const response = await client_1.default.get(`/vehicles/${vehicleId}/similar`, {
params: { limit },
});
return response.data;
}
exports.getSimilarVehicles = getSimilarVehicles;
/**
* 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
*/
async function getVehicleRecommendations(params, limit = 10) {
const response = await client_1.default.get('/vehicles/recommendations', {
params: {
...params,
limit,
},
});
return response.data;
}
exports.getVehicleRecommendations = getVehicleRecommendations;
/**
* Get vehicle pricing history
* @param vehicleId Vehicle identifier
* @returns Promise resolving to pricing history data
*/
async function getVehiclePricingHistory(vehicleId) {
const response = await client_1.default.get(`/vehicles/${vehicleId}/pricing-history`);
return response.data;
}
exports.getVehiclePricingHistory = getVehiclePricingHistory;
/**
* Get vehicle market analysis
* @param vehicleId Vehicle identifier
* @returns Promise resolving to market analysis data
*/
async function getVehicleMarketAnalysis(vehicleId) {
const response = await client_1.default.get(`/vehicles/${vehicleId}/market-analysis`);
return response.data;
}
exports.getVehicleMarketAnalysis = getVehicleMarketAnalysis;
/**
* Get vehicle specifications and features
* @param vehicleId Vehicle identifier
* @returns Promise resolving to detailed specifications
*/
async function getVehicleSpecifications(vehicleId) {
const response = await client_1.default.get(`/vehicles/${vehicleId}/specifications`);
return response.data;
}
exports.getVehicleSpecifications = getVehicleSpecifications;
/**
* Check vehicle availability
* @param vehicleId Vehicle identifier
* @returns Promise resolving to availability information
*/
async function checkVehicleAvailability(vehicleId) {
const response = await client_1.default.get(`/vehicles/${vehicleId}/availability`);
return response.data;
}
exports.checkVehicleAvailability = checkVehicleAvailability;
//# sourceMappingURL=vehicles.js.map