UNPKG

autotrader-connect-api

Version:

Production-ready TypeScript wrapper for Auto Trader UK Connect APIs

291 lines 7.67 kB
/** * Stock management types for AutoTrader API */ import { Vehicle } from './vehicle'; import { PaginatedResponse } from './common'; /** * Stock item status */ export type StockStatus = 'Available' | 'Reserved' | 'Sold' | 'Withdrawn' | 'On Hold' | 'In Preparation' | 'Damaged'; /** * Stock visibility settings */ export type StockVisibility = 'Live' | 'Hidden' | 'Pending' | 'Expired' | 'Rejected'; /** * Stock pricing information */ export interface StockPricing { retailPrice: number; tradePrice?: number; costPrice?: number; margin?: number; marginPercentage?: number; vatIncluded: boolean; negotiable: boolean; priceReduced?: { previousPrice: number; reductionAmount: number; reductionDate: string; }; } /** * Stock location information */ export interface StockLocation { siteId: string; siteName: string; location: string; compound?: string; bayNumber?: string; keyLocation?: string; } /** * Stock advertising settings */ export interface StockAdvertising { autotraderLive: boolean; websiteLive: boolean; forecourtDisplay: boolean; leadGenerationEnabled: boolean; promotionLevel?: 'Standard' | 'Featured' | 'Premium'; advertisingPackage?: string; } /** * Stock item (extends Vehicle with additional stock-specific fields) */ export interface StockItem extends Vehicle { stockId: string; stockNumber?: string; status: StockStatus; visibility: StockVisibility; pricing: StockPricing; stockLocation?: StockLocation; advertising?: StockAdvertising; stockedDate: string; lastUpdated: string; soldDate?: string; estimatedSaleDate?: string; viewCount?: number; enquiryCount?: number; testDriveCount?: number; daysInStock?: number; sourceType?: 'Trade In' | 'Auction' | 'Manufacturer' | 'Private' | 'Other'; purchasePrice?: number; expectedProfit?: number; reservedBy?: string; reservedUntil?: string; preparationTasks?: PreparationTask[]; readyForSale: boolean; internalNotes?: string; publicNotes?: string; } /** * Preparation task */ export interface PreparationTask { id: string; type: 'Cleaning' | 'Mechanical' | 'Bodywork' | 'Documentation' | 'Photography' | 'Other'; description: string; status: 'Pending' | 'In Progress' | 'Completed' | 'Not Required'; assignedTo?: string; estimatedHours?: number; actualHours?: number; cost?: number; completedDate?: string; notes?: string; } /** * Stock search parameters (includes all VehicleSearchParams plus stock-specific filters) */ export interface StockSearchParams { make?: string | string[]; model?: string | string[]; variant?: string | string[]; yearRange?: { min?: number; max?: number; }; priceRange?: { min?: number; max?: number; }; mileageRange?: { min?: number; max?: number; }; condition?: string | string[]; fuelType?: string | string[]; transmission?: string | string[]; bodyType?: string | string[]; doors?: number | number[]; seats?: number | number[]; engineSizeRange?: { min?: number; max?: number; }; powerRange?: { min?: number; max?: number; }; postcode?: string; radius?: number; advertiserId?: number | number[]; dealerId?: string | string[]; dealerType?: 'Franchise' | 'Independent' | 'Private'; features?: string | string[]; keyFeatures?: string | string[]; availableDateRange?: { from?: string; to?: string; }; financingAvailable?: boolean; partExchangeAccepted?: boolean; homeDeliveryAvailable?: boolean; warrantyIncluded?: boolean; excludeWriteOffs?: boolean; includeImports?: boolean; photosOnly?: boolean; sortOrder?: 'asc' | 'desc'; page?: number; pageSize?: number; stockId?: string | string[]; stockNumber?: string | string[]; status?: StockStatus | StockStatus[]; visibility?: StockVisibility | StockVisibility[]; stockedDateFrom?: string; stockedDateTo?: string; soldDateFrom?: string; soldDateTo?: string; lastUpdatedFrom?: string; lastUpdatedTo?: string; siteId?: string | string[]; siteName?: string | string[]; minViewCount?: number; maxViewCount?: number; minEnquiryCount?: number; maxEnquiryCount?: number; minDaysInStock?: number; maxDaysInStock?: number; sourceType?: string | string[]; purchasePriceRange?: { min?: number; max?: number; }; expectedProfitRange?: { min?: number; max?: number; }; marginRange?: { min?: number; max?: number; }; readyForSale?: boolean; hasReservation?: boolean; requiresPreparation?: boolean; sortBy?: 'stockedDate' | 'lastUpdated' | 'soldDate' | 'viewCount' | 'enquiryCount' | 'daysInStock' | 'margin' | 'price' | 'mileage' | 'year' | 'distance' | 'relevance' | 'newest'; } /** * Stock creation request */ export interface CreateStockRequest { make: string; model: string; variant?: string; year: number; registration?: string; vin?: string; mileage: number; fuelType: string; transmission: string; bodyType: string; doors: number; seats: number; colour: string; retailPrice: number; tradePrice?: number; costPrice?: number; vatIncluded?: boolean; negotiable?: boolean; stockNumber?: string; siteId?: string; sourceType?: string; purchasePrice?: number; description?: string; keyFeatures?: string[]; internalNotes?: string; imageUrls?: string[]; } /** * Stock update request */ export interface UpdateStockRequest { [key: string]: unknown; status?: StockStatus; visibility?: StockVisibility; pricing?: Partial<StockPricing>; advertising?: Partial<StockAdvertising>; preparationTasks?: PreparationTask[]; internalNotes?: string; publicNotes?: string; } /** * Stock response from API */ export interface StockResponse extends StockItem { performanceMetrics?: { averageViewsPerDay?: number; enquiryConversionRate?: number; daysToSell?: number; competitivePosition?: 'Above Average' | 'Average' | 'Below Average'; }; marketAnalysis?: { similarVehiclesCount?: number; averageMarketPrice?: number; priceCompetitiveness?: 'Competitive' | 'Above Market' | 'Below Market'; recommendedPrice?: number; }; } /** * Stock list response */ export type StockListResponse = PaginatedResponse<StockResponse>; /** * Stock statistics */ export interface StockStatistics { totalStock: number; availableStock: number; soldThisMonth: number; averageDaysToSell: number; totalValue: number; averageMargin: number; topPerformingMakes: Array<{ make: string; count: number; averageDaysToSell: number; }>; statusBreakdown: Record<StockStatus, number>; visibilityBreakdown: Record<StockVisibility, number>; } /** * Bulk stock operation request */ export interface BulkStockOperation { operation: 'update' | 'delete' | 'publish' | 'hide'; stockIds: string[]; updateData?: Partial<UpdateStockRequest>; } /** * Bulk operation response */ export interface BulkOperationResponse { success: boolean; processedCount: number; successfulCount: number; failedCount: number; errors?: Array<{ stockId: string; error: string; }>; } //# sourceMappingURL=stock.d.ts.map