Context
This is the Python follow-up for the current 3.1 wholesale-feed model, replacing the stale CatalogSync shape tracked in adcp#4789. The protocol no longer has separate /catalog/events or /catalog/subscriptions endpoints.
Current surface:
- bootstrap via
get_products with buying_mode: "wholesale" and get_signals with discovery_mode: "wholesale"
- persist
wholesale_feed_version and cache_scope per connected agent/account
- refresh with
if_wholesale_feed_version; unchanged feeds return unchanged: true
- register receivers through account-level
sync_accounts.accounts[].notification_configs[]
- process
product.*, signal.*, and wholesale_feed.bulk_change notifications
Request
After the TypeScript API shape stabilizes in adcp-client#2094, port an idiomatic Python helper for maintaining a local mirror of wholesale product/signal feeds.
Suggested scope:
- Async bootstrap and refresh API for product and signal wholesale feeds.
- In-memory indexes keyed by agent URL/account plus product or signal id.
- Version/cache-scope tracking with conditional refresh support.
- Optional persistence hooks for stored versions/index state.
- Event/callback hooks for wholesale-feed webhook notifications.
- Re-bootstrap the affected feed on
wholesale_feed.bulk_change, using affected_entity_type to choose product vs signal.
- Helper for registering
notification_configs[] through sync_accounts.
- Docs or example showing receiver plus mirror usage.
Tests
- Unit coverage for conditional refresh, unchanged responses, re-bootstrap on bulk change, and product/signal notification routing.
- Integration coverage against the training-agent storyboards from adcp#5056 where practical.
Related
Context
This is the Python follow-up for the current 3.1 wholesale-feed model, replacing the stale
CatalogSyncshape tracked in adcp#4789. The protocol no longer has separate/catalog/eventsor/catalog/subscriptionsendpoints.Current surface:
get_productswithbuying_mode: "wholesale"andget_signalswithdiscovery_mode: "wholesale"wholesale_feed_versionandcache_scopeper connected agent/accountif_wholesale_feed_version; unchanged feeds returnunchanged: truesync_accounts.accounts[].notification_configs[]product.*,signal.*, andwholesale_feed.bulk_changenotificationsRequest
After the TypeScript API shape stabilizes in adcp-client#2094, port an idiomatic Python helper for maintaining a local mirror of wholesale product/signal feeds.
Suggested scope:
wholesale_feed.bulk_change, usingaffected_entity_typeto choose product vs signal.notification_configs[]throughsync_accounts.Tests
Related