@adcp/client API Reference - v4.19.0
    Preparing search index...

    Interface GetProductsResponse

    Response payload for get_products task

    interface GetProductsResponse {
        products: Product[];
        proposals?: Proposal[];
        errors?: Error[];
        property_list_applied?: boolean;
        catalog_applied?: boolean;
        refinement_applied?: {
            scope?: "product" | "request" | "proposal";
            id?: string;
            status: "applied" | "partial" | "unable";
            notes?: string;
        }[];
        incomplete?: {
            scope: "products"
            | "pricing"
            | "forecast"
            | "proposals";
            description: string;
            estimated_wait?: Duration;
        }[];
        pagination?: PaginationResponse;
        sandbox?: boolean;
        context?: ContextObject;
        ext?: ExtensionObject;
    }
    Index

    Properties

    products: Product[]

    Array of matching products

    proposals?: Proposal[]

    Optional array of proposed media plans with budget allocations across products. Publishers include proposals when they can provide strategic guidance based on the brief. Proposals are actionable - buyers can refine them via follow-up get_products calls within the same session, or execute them directly via create_media_buy.

    errors?: Error[]

    Task-specific errors and warnings (e.g., product filtering issues)

    property_list_applied?: boolean

    [AdCP 3.0] Indicates whether property_list filtering was applied. True if the agent filtered products based on the provided property_list. Absent or false if property_list was not provided or not supported by this agent.

    catalog_applied?: boolean

    Whether the seller filtered results based on the provided catalog. True if the seller matched catalog items against its inventory. Absent or false if no catalog was provided or the seller does not support catalog matching.

    refinement_applied?: {
        scope?: "product" | "request" | "proposal";
        id?: string;
        status: "applied" | "partial" | "unable";
        notes?: string;
    }[]

    Seller's response to each change request in the refine array, matched by position. Each entry acknowledges whether the corresponding ask was applied, partially applied, or unable to be fulfilled. MUST contain the same number of entries in the same order as the request's refine array. Only present when the request used buying_mode: 'refine'.

    Type Declaration

    • Optionalscope?: "product" | "request" | "proposal"

      Echoes the scope from the corresponding refine entry. Allows orchestrators to cross-validate alignment.

    • Optionalid?: string

      Echoes the id from the corresponding refine entry (for product and proposal scopes).

    • status: "applied" | "partial" | "unable"

      'applied': the ask was fulfilled. 'partial': the ask was partially fulfilled — see notes for details. 'unable': the seller could not fulfill the ask — see notes for why.

    • Optionalnotes?: string

      Seller explanation of what was done, what couldn't be done, or why. Recommended when status is 'partial' or 'unable'.

    incomplete?: {
        scope: "products" | "pricing" | "forecast" | "proposals";
        description: string;
        estimated_wait?: Duration;
    }[]

    Declares what the seller could not finish within the buyer's time_budget or due to internal limits. Each entry identifies a scope that is missing or partial. Absent when the response is fully complete.

    Type Declaration

    • scope: "products" | "pricing" | "forecast" | "proposals"

      'products': not all inventory sources were searched. 'pricing': products returned but pricing is absent or unconfirmed. 'forecast': products returned but forecast data is absent. 'proposals': proposals were not generated or are incomplete.

    • description: string

      Human-readable explanation of what is missing and why.

    • Optionalestimated_wait?: Duration

      How much additional time would resolve this scope. Allows the buyer to decide whether to retry with a larger time_budget.

    pagination?: PaginationResponse
    sandbox?: boolean

    When true, this response contains simulated data from sandbox mode.

    context?: ContextObject
    ext?: ExtensionObject