eBay OAuth (Connect eBay Account) for full trust scores #2

Open
opened 2026-03-26 15:05:48 -07:00 by pyr0ball · 0 comments
Owner

Problem

eBay Browse API returns only 3 seller fields (username, feedbackScore, feedbackPercentage). registrationDate and feedbackByCategory require a User Access Token (OAuth Authorization Code flow) via Trading API GetUser. App-level Bearer tokens are rejected.

Current workarounds:

  • account_age_days: Shopping API GetUserProfile (app-level token, inline in API adapter) + BTF /itm/ scrape (background, scraper adapter)
  • category_history_json: _ssn seller page scrape (background, Playwright)

With user OAuth, both signals would be available instantly from a single API call.

Proposed Solution

Implement eBay OAuth Authorization Code flow as a shared circuitforge-core module: core.platforms.ebay.oauth.

Scope

  • eBay OAuth redirect + callback endpoint
  • Refresh token storage per user (18-month eBay refresh token expiry)
  • Trading API XML client (GetUser call)
  • Shared across snipe, and future menagerie products that need platform OAuth (Falcon, Osprey)

Tier Gate

  • Cloud: Paid+ tier (unlocks full trust scores for cloud users)
  • Self-hosted: BYOK — user supplies EBAY_APP_ID + EBAY_CERT_ID
  • Free tier: Shopping API + BTF scraping as current

Deferral Condition

Do not build until eBay OAuth is needed by a second menagerie product (Falcon or Osprey). Building it shared in circuitforge-core at that point avoids duplicating the OAuth flow across products.

  • circuitforge-core module: core.platforms.ebay.oauth
  • Trading API GetUser response: RegistrationDate + SellerFeedbackSummary.FeedbackByCategory
  • Any eBay account works as credential (user does not need to be a seller)
## Problem eBay Browse API returns only 3 seller fields (`username`, `feedbackScore`, `feedbackPercentage`). `registrationDate` and `feedbackByCategory` require a **User Access Token** (OAuth Authorization Code flow) via Trading API `GetUser`. App-level Bearer tokens are rejected. **Current workarounds:** - `account_age_days`: Shopping API `GetUserProfile` (app-level token, inline in API adapter) + BTF `/itm/` scrape (background, scraper adapter) - `category_history_json`: `_ssn` seller page scrape (background, Playwright) With user OAuth, both signals would be available instantly from a single API call. ## Proposed Solution Implement eBay OAuth Authorization Code flow as a shared `circuitforge-core` module: `core.platforms.ebay.oauth`. ### Scope - eBay OAuth redirect + callback endpoint - Refresh token storage per user (18-month eBay refresh token expiry) - Trading API XML client (`GetUser` call) - Shared across snipe, and future menagerie products that need platform OAuth (Falcon, Osprey) ### Tier Gate - **Cloud**: Paid+ tier (unlocks full trust scores for cloud users) - **Self-hosted**: BYOK — user supplies `EBAY_APP_ID` + `EBAY_CERT_ID` - **Free tier**: Shopping API + BTF scraping as current ## Deferral Condition Do not build until eBay OAuth is needed by a second menagerie product (Falcon or Osprey). Building it shared in `circuitforge-core` at that point avoids duplicating the OAuth flow across products. ## Related - `circuitforge-core` module: `core.platforms.ebay.oauth` - Trading API `GetUser` response: `RegistrationDate` + `SellerFeedbackSummary.FeedbackByCategory` - Any eBay account works as credential (user does not need to be a seller)
pyr0ball added this to the Public Launch milestone 2026-04-04 16:33:19 -07:00
Sign in to join this conversation.
No labels
backlog
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Circuit-Forge/snipe#2
No description provided.