@adcp/sdk API Reference - v14.3.0
    Preparing search index...

    Type Alias WholesaleFeedEvent

    WholesaleFeedEvent: {
        event_id: string;
        event_type:
            | "product.created"
            | "product.updated"
            | "product.priced"
            | "product.removed"
            | "signal.created"
            | "signal.updated"
            | "signal.priced"
            | "signal.removed"
            | "wholesale_feed.bulk_change";
        entity_type: "product"
        | "signal"
        | "feed";
        entity_id: string;
        created_at: string;
        payload: {};
    } & (
        | {
            event_type: "product.created";
            entity_type?: "product";
            payload?: {
                product_id: string;
                product?: Product;
                canonical_product?: CanonicalProduct;
                applies_to: CacheLayerScope;
            };
        }
        | {
            event_type: "product.updated";
            entity_type?: "product";
            payload?: {
                product_id: string;
                product?: Product1;
                canonical_product?: CanonicalProduct;
                changed_fields?: string[];
                applies_to: CacheLayerScope;
            };
        }
        | {
            event_type: "product.priced";
            entity_type?: "product";
            payload?: {
                product_id: string;
                pricing_options?: PricingOption[];
                canonical_pricing_options?: CanonicalPricingOption[];
                previous_pricing_option_ids?: string[];
                effective_at?: string;
                retracts_event_id?: string;
                applies_to: CacheLayerScope;
            };
        }
        | {
            event_type: "product.removed";
            entity_type?: "product";
            payload?: {
                product_id: string;
                removal_reason?: RemovalReason;
                applies_to: CacheLayerScope;
            };
        }
        | {
            event_type: "signal.created";
            entity_type?: "signal";
            payload?: {
                signal_agent_segment_id: string;
                signal_ref?: SignalRef;
                applies_to: CacheLayerScope;
                signal: WholesaleSignalObject;
            };
        }
        | {
            event_type: "signal.updated";
            entity_type?: "signal";
            payload?: {
                signal_agent_segment_id: string;
                signal_ref?: SignalRef;
                changed_fields?: string[];
                applies_to: CacheLayerScope;
                signal: WholesaleSignalObject;
            };
        }
        | {
            event_type: "signal.priced";
            entity_type?: "signal";
            payload?: {
                signal_agent_segment_id: string;
                signal_ref?: SignalRef;
                pricing_options: VendorPricingOption[];
                previous_pricing_option_ids?: string[];
                effective_at?: string;
                retracts_event_id?: string;
                applies_to: CacheLayerScope;
            };
        }
        | {
            event_type: "signal.removed";
            entity_type?: "signal";
            payload?: {
                signal_agent_segment_id: string;
                signal_ref?: SignalRef;
                removal_reason?: RemovalReason;
                applies_to: CacheLayerScope;
            };
        }
        | {
            event_type: "wholesale_feed.bulk_change";
            entity_type?: "feed";
            payload?: {
                summary: string;
                affected_count: number;
                recommendation?: "wholesale_resync";
                applies_to: CacheLayerScope;
                affected_entity_type: "product"
                | "signal";
            };
        }
    )

    A single change event emitted by an AdCP agent's wholesale product feed or wholesale signals feed and delivered inside wholesale-feed-webhook payloads. Events are denormalized so consumers can update local state without polling list_products / get_signals. This is distinct from buyer-provided feeds managed by sync_catalogs. The discriminator is event_type; each branch defines the payload shape.

    Type Declaration

    • event_id: string

      Stable logical event identifier for this wholesale feed change. MUST equal the enclosing webhook notification_id. UUID v7 is RECOMMENDED so receivers can detect obvious out-of-order delivery; missed or distrusted pushes are repaired through list_products / get_signals.

      uuid

    • event_type:
          | "product.created"
          | "product.updated"
          | "product.priced"
          | "product.removed"
          | "signal.created"
          | "signal.updated"
          | "signal.priced"
          | "signal.removed"
          | "wholesale_feed.bulk_change"

      Discriminator. Determines the shape of payload.

    • entity_type: "product" | "signal" | "feed"

      Entity class. 'product' for product.* events, 'signal' for signal.* events, 'feed' for wholesale_feed.bulk_change.

    • entity_id: string

      Entity identifier. For product.* events, the product_id. For signal.* events, the signal_agent_segment_id. For wholesale_feed.bulk_change, an agent-defined operation id.

    • created_at: string

      ISO 8601 timestamp when the agent emitted the event. Advisory — consumers MUST order by event_id (UUID v7), not by created_at, to avoid clock-skew artifacts.

      date-time

    • payload: {}

      Event-type-specific payload. Shape is determined by event_type per the oneOf below.

    • {
          event_type: "product.created";
          entity_type?: "product";
          payload?: {
              product_id: string;
              product?: Product;
              canonical_product?: CanonicalProduct;
              applies_to: CacheLayerScope;
          };
      }
    • {
          event_type: "product.updated";
          entity_type?: "product";
          payload?: {
              product_id: string;
              product?: Product1;
              canonical_product?: CanonicalProduct;
              changed_fields?: string[];
              applies_to: CacheLayerScope;
          };
      }
    • {
          event_type: "product.priced";
          entity_type?: "product";
          payload?: {
              product_id: string;
              pricing_options?: PricingOption[];
              canonical_pricing_options?: CanonicalPricingOption[];
              previous_pricing_option_ids?: string[];
              effective_at?: string;
              retracts_event_id?: string;
              applies_to: CacheLayerScope;
          };
      }
    • {
          event_type: "product.removed";
          entity_type?: "product";
          payload?: {
              product_id: string;
              removal_reason?: RemovalReason;
              applies_to: CacheLayerScope;
          };
      }
    • {
          event_type: "signal.created";
          entity_type?: "signal";
          payload?: {
              signal_agent_segment_id: string;
              signal_ref?: SignalRef;
              applies_to: CacheLayerScope;
              signal: WholesaleSignalObject;
          };
      }
    • {
          event_type: "signal.updated";
          entity_type?: "signal";
          payload?: {
              signal_agent_segment_id: string;
              signal_ref?: SignalRef;
              changed_fields?: string[];
              applies_to: CacheLayerScope;
              signal: WholesaleSignalObject;
          };
      }
    • {
          event_type: "signal.priced";
          entity_type?: "signal";
          payload?: {
              signal_agent_segment_id: string;
              signal_ref?: SignalRef;
              pricing_options: VendorPricingOption[];
              previous_pricing_option_ids?: string[];
              effective_at?: string;
              retracts_event_id?: string;
              applies_to: CacheLayerScope;
          };
      }
    • {
          event_type: "signal.removed";
          entity_type?: "signal";
          payload?: {
              signal_agent_segment_id: string;
              signal_ref?: SignalRef;
              removal_reason?: RemovalReason;
              applies_to: CacheLayerScope;
          };
      }
    • {
          event_type: "wholesale_feed.bulk_change";
          entity_type?: "feed";
          payload?: {
              summary: string;
              affected_count: number;
              recommendation?: "wholesale_resync";
              applies_to: CacheLayerScope;
              affected_entity_type: "product" | "signal";
          };
      }