UNPKG

autotrader-connect-api

Version:

Production-ready TypeScript wrapper for Auto Trader UK Connect APIs

125 lines 4.6 kB
/** * Advertiser management module for AutoTrader API * Handles dealer/advertiser account operations and information retrieval */ import client from '../client'; /** * Get current advertiser information (authenticated advertiser) * @returns Promise resolving to advertiser details */ export async function getCurrentAdvertiser() { const response = await client.get('/advertisers/me'); return response.data; } /** * Get advertiser by ID * @param advertiserId Advertiser ID * @returns Promise resolving to advertiser details */ export async function getAdvertiser(advertiserId) { const response = await client.get(`/advertisers/${advertiserId}`); return response.data; } /** * Search advertisers with filters * @param params Search parameters * @returns Promise resolving to paginated advertiser results */ export async function searchAdvertisers(params = {}) { const response = await client.get('/advertisers/search', { params: { name: params.name, type: params.type, accountStatus: params.accountStatus, subscriptionType: params.subscriptionType, postcode: params.postcode, radius: params.radius, county: params.county, region: params.region, specializations: Array.isArray(params.specializations) ? params.specializations.join(',') : params.specializations, minRating: params.minRating, minVehicleCount: params.minVehicleCount, maxVehicleCount: params.maxVehicleCount, page: params.page || 1, pageSize: params.pageSize || 20, sortBy: params.sortBy || 'name', sortOrder: params.sortOrder || 'asc', }, }); return response; } /** * Get all advertisers (admin function) * @param page Page number * @param pageSize Number of results per page * @returns Promise resolving to paginated advertiser list */ export async function getAllAdvertisers(page = 1, pageSize = 50) { const response = await client.get('/advertisers', { params: { page, pageSize }, }); return response; } /** * Update advertiser information * @param advertiserId Advertiser ID (optional, defaults to current advertiser) * @param updates Partial advertiser information to update * @returns Promise resolving to updated advertiser details */ export async function updateAdvertiser(updates, advertiserId) { const endpoint = advertiserId ? `/advertisers/${advertiserId}` : '/advertisers/me'; const response = await client.put(endpoint, updates); return response.data; } /** * Get advertiser statistics * @param advertiserId Advertiser ID (optional, defaults to current advertiser) * @param period Time period for statistics * @returns Promise resolving to advertiser statistics */ export async function getAdvertiserStats(advertiserId, period = '30d') { const endpoint = advertiserId ? `/advertisers/${advertiserId}/stats` : '/advertisers/me/stats'; const response = await client.get(endpoint, { params: { period }, }); return response.data; } /** * Get advertiser's vehicle count by status * @param advertiserId Advertiser ID (optional, defaults to current advertiser) * @returns Promise resolving to vehicle count breakdown */ export async function getAdvertiserVehicleCount(advertiserId) { const endpoint = advertiserId ? `/advertisers/${advertiserId}/vehicles/count` : '/advertisers/me/vehicles/count'; const response = await client.get(endpoint); return response.data; } /** * Get nearby advertisers * @param postcode Postcode to search around * @param radius Search radius in miles * @param limit Maximum number of results * @returns Promise resolving to nearby advertisers */ export async function getNearbyAdvertisers(postcode, radius = 10, limit = 20) { const response = await client.get('/advertisers/nearby', { params: { postcode, radius, limit }, }); return response.data; } /** * Get top-rated advertisers * @param limit Maximum number of results * @param minReviews Minimum number of reviews required * @returns Promise resolving to top-rated advertisers */ export async function getTopRatedAdvertisers(limit = 10, minReviews = 5) { const response = await client.get('/advertisers/top-rated', { params: { limit, minReviews }, }); return response.data; } // Legacy exports for backward compatibility export const getResource = getCurrentAdvertiser; export const listResources = getAllAdvertisers; //# sourceMappingURL=advertisers.js.map