241 lines
6.6 KiB
Markdown
241 lines
6.6 KiB
Markdown
# API Intelligence Findings
|
|
|
|
## GraphQL API - Available Fields for Intelligence
|
|
|
|
### Key Discovery: Additional Fields Available
|
|
|
|
From GraphQL schema introspection on `Lot` type:
|
|
|
|
#### **Already Captured ✓**
|
|
- `currentBidAmount` (Money) - Current bid
|
|
- `initialAmount` (Money) - Starting bid
|
|
- `nextMinimalBid` (Money) - Minimum bid
|
|
- `bidsCount` (Int) - Bid count
|
|
- `startDate` / `endDate` (TbaDate) - Timing
|
|
- `minimumBidAmountMet` (MinimumBidAmountMet) - Status
|
|
- `attributes` - Brand/model extraction
|
|
- `title`, `description`, `images`
|
|
|
|
#### **NEW - Available but NOT Captured:**
|
|
|
|
1. **followersCount** (Int) - **CRITICAL for intelligence!**
|
|
- This is the "watch count" we thought was missing
|
|
- Indicates bidder interest level
|
|
- **ACTION: Add to schema and extraction**
|
|
|
|
2. **biddingStatus** (BiddingStatus) - Lot bidding state
|
|
- More detailed than minimumBidAmountMet
|
|
- **ACTION: Investigate enum values**
|
|
|
|
3. **estimatedFullPrice** (EstimatedFullPrice) - **Found it!**
|
|
- Available via `LotDetails.estimatedFullPrice`
|
|
- May contain estimated min/max values
|
|
- **ACTION: Test extraction**
|
|
|
|
4. **nextBidStepInCents** (Long) - Exact bid increment
|
|
- More precise than our calculated bid_increment
|
|
- **ACTION: Replace calculated field**
|
|
|
|
5. **condition** (String) - Direct condition field
|
|
- Cleaner than attribute extraction
|
|
- **ACTION: Use as primary source**
|
|
|
|
6. **categoryInformation** (LotCategoryInformation) - Category data
|
|
- Structured category info
|
|
- **ACTION: Extract category path**
|
|
|
|
7. **location** (LotLocation) - Lot location details
|
|
- City, country, possibly address
|
|
- **ACTION: Add to schema**
|
|
|
|
8. **remarks** (String) - Additional notes
|
|
- May contain pickup/viewing text
|
|
- **ACTION: Check for viewing/pickup extraction**
|
|
|
|
9. **appearance** (String) - Condition appearance
|
|
- Visual condition notes
|
|
- **ACTION: Combine with condition_description**
|
|
|
|
10. **packaging** (String) - Packaging details
|
|
- Relevant for shipping intelligence
|
|
|
|
11. **quantity** (Long) - Lot quantity
|
|
- Important for bulk lots
|
|
|
|
12. **vat** (BigDecimal) - VAT percentage
|
|
- For total cost calculations
|
|
|
|
13. **buyerPremiumPercentage** (BigDecimal) - Buyer premium
|
|
- For total cost calculations
|
|
|
|
14. **videos** - Video URLs (if available)
|
|
- **ACTION: Add video support**
|
|
|
|
15. **documents** - Document URLs (if available)
|
|
- May contain specs/manuals
|
|
|
|
## Bid History API - Fields
|
|
|
|
### Currently Captured ✓
|
|
- `buyerId` (UUID) - Anonymized bidder
|
|
- `buyerNumber` (Int) - Bidder number
|
|
- `currentBid.cents` / `currency` - Bid amount
|
|
- `autoBid` (Boolean) - Autobid flag
|
|
- `createdAt` (Timestamp) - Bid time
|
|
|
|
### Additional Available:
|
|
- `negotiated` (Boolean) - Was bid negotiated
|
|
- **ACTION: Add to bid_history table**
|
|
|
|
## Auction API - Not Available
|
|
- Attempted `auctionDetails` query - **does not exist**
|
|
- Auction data must be scraped from listing pages
|
|
|
|
## Priority Actions for Intelligence
|
|
|
|
### HIGH PRIORITY (Immediate):
|
|
1. ✅ Add `followersCount` field (watch count)
|
|
2. ✅ Add `estimatedFullPrice` extraction
|
|
3. ✅ Use `nextBidStepInCents` instead of calculated increment
|
|
4. ✅ Add `condition` as primary condition source
|
|
5. ✅ Add `categoryInformation` extraction
|
|
6. ✅ Add `location` details
|
|
7. ✅ Add `negotiated` to bid_history table
|
|
|
|
### MEDIUM PRIORITY:
|
|
8. Extract `remarks` for viewing/pickup text
|
|
9. Add `appearance` and `packaging` fields
|
|
10. Add `quantity` field
|
|
11. Add `vat` and `buyerPremiumPercentage` for cost calculations
|
|
12. Add `biddingStatus` enum extraction
|
|
|
|
### LOW PRIORITY:
|
|
13. Add video URL support
|
|
14. Add document URL support
|
|
|
|
## Updated Schema Requirements
|
|
|
|
### lots table - NEW columns:
|
|
```sql
|
|
ALTER TABLE lots ADD COLUMN followers_count INTEGER DEFAULT 0;
|
|
ALTER TABLE lots ADD COLUMN estimated_min_price REAL;
|
|
ALTER TABLE lots ADD COLUMN estimated_max_price REAL;
|
|
ALTER TABLE lots ADD COLUMN location_city TEXT;
|
|
ALTER TABLE lots ADD COLUMN location_country TEXT;
|
|
ALTER TABLE lots ADD COLUMN lot_condition TEXT; -- Direct from API
|
|
ALTER TABLE lots ADD COLUMN appearance TEXT;
|
|
ALTER TABLE lots ADD COLUMN packaging TEXT;
|
|
ALTER TABLE lots ADD COLUMN quantity INTEGER DEFAULT 1;
|
|
ALTER TABLE lots ADD COLUMN vat_percentage REAL;
|
|
ALTER TABLE lots ADD COLUMN buyer_premium_percentage REAL;
|
|
ALTER TABLE lots ADD COLUMN remarks TEXT;
|
|
ALTER TABLE lots ADD COLUMN bidding_status TEXT;
|
|
ALTER TABLE lots ADD COLUMN videos_json TEXT; -- Store as JSON array
|
|
ALTER TABLE lots ADD COLUMN documents_json TEXT; -- Store as JSON array
|
|
```
|
|
|
|
### bid_history table - NEW column:
|
|
```sql
|
|
ALTER TABLE bid_history ADD COLUMN negotiated INTEGER DEFAULT 0;
|
|
```
|
|
|
|
## Intelligence Use Cases
|
|
|
|
### With followers_count:
|
|
- Predict lot popularity and final price
|
|
- Identify hot items early
|
|
- Calculate interest-to-bid conversion rate
|
|
|
|
### With estimated prices:
|
|
- Compare final price to estimate
|
|
- Identify bargains (final < estimate)
|
|
- Calculate auction house accuracy
|
|
|
|
### With nextBidStepInCents:
|
|
- Show exact next bid amount
|
|
- Calculate optimal bidding strategy
|
|
|
|
### With location:
|
|
- Filter by proximity
|
|
- Calculate pickup logistics
|
|
|
|
### With vat/buyer_premium:
|
|
- Calculate true total cost
|
|
- Compare all-in prices
|
|
|
|
### With condition/appearance:
|
|
- Better condition scoring
|
|
- Identify restoration projects
|
|
|
|
## Updated GraphQL Query
|
|
|
|
```graphql
|
|
query EnhancedLotQuery($lotDisplayId: String!, $locale: String!, $platform: Platform!) {
|
|
lotDetails(displayId: $lotDisplayId, locale: $locale, platform: $platform) {
|
|
estimatedFullPrice {
|
|
min { cents currency }
|
|
max { cents currency }
|
|
}
|
|
lot {
|
|
id
|
|
displayId
|
|
title
|
|
description { text }
|
|
currentBidAmount { cents currency }
|
|
initialAmount { cents currency }
|
|
nextMinimalBid { cents currency }
|
|
nextBidStepInCents
|
|
bidsCount
|
|
followersCount
|
|
startDate
|
|
endDate
|
|
minimumBidAmountMet
|
|
biddingStatus
|
|
condition
|
|
appearance
|
|
packaging
|
|
quantity
|
|
vat
|
|
buyerPremiumPercentage
|
|
remarks
|
|
auctionId
|
|
location {
|
|
city
|
|
countryCode
|
|
addressLine1
|
|
addressLine2
|
|
}
|
|
categoryInformation {
|
|
id
|
|
name
|
|
path
|
|
}
|
|
images {
|
|
url
|
|
thumbnailUrl
|
|
}
|
|
videos {
|
|
url
|
|
thumbnailUrl
|
|
}
|
|
documents {
|
|
url
|
|
name
|
|
}
|
|
attributes {
|
|
name
|
|
value
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Summary
|
|
|
|
**NEW fields found:** 15+ additional intelligence fields available
|
|
**Most critical:** `followersCount` (watch count), `estimatedFullPrice`, `nextBidStepInCents`
|
|
**Data quality impact:** Estimated 80%+ increase in intelligence value
|
|
|
|
These fields will significantly enhance prediction and analysis capabilities.
|