UNPKG

autotrader-connect-api

Version:

Production-ready TypeScript wrapper for Auto Trader UK Connect APIs

145 lines 5.13 kB
/** * Advertiser management module for AutoTrader API * Handles dealer/advertiser account operations and information retrieval */ import { PaginatedResponse } from '../types/common'; import { AdvertiserInfo } from '../types/vehicle'; /** * Extended advertiser information for management operations */ export interface AdvertiserDetails extends AdvertiserInfo { accountStatus: 'Active' | 'Inactive' | 'Suspended' | 'Pending'; subscriptionType: 'Basic' | 'Premium' | 'Enterprise'; subscriptionExpiry: string; companyNumber?: string; vatNumber?: string; businessLicense?: string; stats: { totalVehicles: number; activeListings: number; soldThisMonth: number; averageDaysToSell: number; customerRating: number; totalReviews: number; }; apiAccess: { enabled: boolean; rateLimitTier: string; lastApiCall?: string; }; createdAt: string; updatedAt: string; lastLoginAt?: string; } /** * Advertiser search parameters */ export interface AdvertiserSearchParams { name?: string; type?: 'Franchise' | 'Independent' | 'Private'; accountStatus?: 'Active' | 'Inactive' | 'Suspended' | 'Pending'; subscriptionType?: 'Basic' | 'Premium' | 'Enterprise'; postcode?: string; radius?: number; county?: string; region?: string; specializations?: string[]; minRating?: number; minVehicleCount?: number; maxVehicleCount?: number; page?: number; pageSize?: number; sortBy?: 'name' | 'rating' | 'vehicleCount' | 'established' | 'location'; sortOrder?: 'asc' | 'desc'; } /** * Get current advertiser information (authenticated advertiser) * @returns Promise resolving to advertiser details */ export declare function getCurrentAdvertiser(): Promise<AdvertiserDetails>; /** * Get advertiser by ID * @param advertiserId Advertiser ID * @returns Promise resolving to advertiser details */ export declare function getAdvertiser(advertiserId: number): Promise<AdvertiserDetails>; /** * Search advertisers with filters * @param params Search parameters * @returns Promise resolving to paginated advertiser results */ export declare function searchAdvertisers(params?: AdvertiserSearchParams): Promise<PaginatedResponse<AdvertiserInfo>>; /** * Get all advertisers (admin function) * @param page Page number * @param pageSize Number of results per page * @returns Promise resolving to paginated advertiser list */ export declare function getAllAdvertisers(page?: number, pageSize?: number): Promise<PaginatedResponse<AdvertiserInfo>>; /** * 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 declare function updateAdvertiser(updates: Partial<Pick<AdvertiserDetails, 'name' | 'type' | 'location' | 'contact' | 'website' | 'specializations'>>, advertiserId?: number): Promise<AdvertiserDetails>; /** * 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 declare function getAdvertiserStats(advertiserId?: number, period?: '7d' | '30d' | '90d' | '1y'): Promise<{ vehicleStats: { total: number; active: number; sold: number; reserved: number; draft: number; }; performanceStats: { totalViews: number; totalEnquiries: number; conversionRate: number; averageDaysToSell: number; averageSellingPrice: number; }; customerStats: { rating: number; reviewCount: number; responseTime: number; responseRate: number; }; }>; /** * Get advertiser's vehicle count by status * @param advertiserId Advertiser ID (optional, defaults to current advertiser) * @returns Promise resolving to vehicle count breakdown */ export declare function getAdvertiserVehicleCount(advertiserId?: number): Promise<{ total: number; active: number; sold: number; reserved: number; draft: number; byMake: Record<string, number>; byBodyType: Record<string, number>; }>; /** * 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 declare function getNearbyAdvertisers(postcode: string, radius?: number, limit?: number): Promise<AdvertiserInfo[]>; /** * 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 declare function getTopRatedAdvertisers(limit?: number, minReviews?: number): Promise<AdvertiserInfo[]>; export declare const getResource: typeof getCurrentAdvertiser; export declare const listResources: typeof getAllAdvertisers; //# sourceMappingURL=advertisers.d.ts.map