Skip to content

Python SDK: wholesale feed mirror helper for products/signals #900

@bokelley

Description

@bokelley

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    claude-triagedenhancementNew feature or requestv3.1Blocked on AdCP spec v3.1 — needs spec changes before SDK can land

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions