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