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

    Interface Product

    Represents available advertising inventory

    interface Product {
        product_id: string;
        name: string;
        description: string;
        publisher_properties: PublisherPropertySelector[];
        channels?: MediaChannel[];
        format_ids: FormatID[];
        placements?: Placement[];
        delivery_type: DeliveryType;
        exclusivity?: Exclusivity;
        pricing_options: PricingOption[];
        forecast?: DeliveryForecast;
        outcome_measurement?: OutcomeMeasurement;
        delivery_measurement?: { provider: string; notes?: string };
        reporting_capabilities?: ReportingCapabilities;
        creative_policy?: CreativePolicy;
        is_custom?: boolean;
        property_targeting_allowed?: boolean;
        data_provider_signals?: DataProviderSignalSelector[];
        signal_targeting_allowed?: boolean;
        catalog_types?: CatalogType[];
        metric_optimization?: {
            supported_metrics: (
                | "clicks"
                | "views"
                | "completed_views"
                | "viewed_seconds"
                | "attention_seconds"
                | "attention_score"
                | "engagements"
                | "follows"
                | "saves"
                | "profile_visits"
                | "reach"
            )[];
            supported_reach_units?: ReachUnit[];
            supported_view_durations?: number[];
            supported_targets?: ("cost_per" | "threshold_rate")[];
        };
        max_optimization_goals?: number;
        measurement_readiness?: MeasurementReadiness;
        conversion_tracking?: {
            action_sources?: ActionSource[];
            supported_targets?: ("cost_per" | "per_ad_spend" | "maximize_value")[];
            platform_managed?: boolean;
        };
        catalog_match?: {
            matched_gtins?: string[];
            matched_ids?: string[];
            matched_count?: number;
            submitted_count: number;
        };
        brief_relevance?: string;
        expires_at?: string;
        product_card?: { format_id: FormatID; manifest: {} };
        product_card_detailed?: { format_id: FormatID; manifest: {} };
        collections?: CollectionSelector[];
        collection_targeting_allowed?: boolean;
        installments?: Installment[];
        enforced_policies?: string[];
        trusted_match?: {
            context_match: boolean;
            identity_match?: boolean;
            response_types?: TMPResponseType[];
            dynamic_brands?: boolean;
            providers?: {
                agent_url: string;
                context_match?: boolean;
                identity_match?: boolean;
            }[];
        };
        material_submission?: {
            url?: string;
            email?: string;
            instructions?: string;
            ext?: ExtensionObject;
        };
        ext?: ExtensionObject;
    }
    Index

    Properties

    product_id: string

    Unique identifier for the product

    name: string

    Human-readable product name

    description: string

    Detailed description of the product and its inventory

    publisher_properties: PublisherPropertySelector[]

    Publisher properties covered by this product. Buyers fetch actual property definitions from each publisher's adagents.json and validate agent authorization. Selection patterns mirror the authorization patterns in adagents.json for consistency.

    channels?: MediaChannel[]

    Advertising channels this product is sold as. Products inherit from their properties' supported_channels but may narrow the scope. For example, a product covering YouTube properties might be sold as ['ctv'] even though those properties support ['olv', 'social', 'ctv'].

    format_ids: FormatID[]

    Array of supported creative format IDs - structured format_id objects with agent_url and id

    placements?: Placement[]

    Optional array of specific placements within this product. When provided, buyers can target specific placements when assigning creatives.

    delivery_type: DeliveryType
    exclusivity?: Exclusivity
    pricing_options: PricingOption[]

    Available pricing models for this product

    forecast?: DeliveryForecast
    outcome_measurement?: OutcomeMeasurement
    delivery_measurement?: { provider: string; notes?: string }

    Measurement provider and methodology for delivery metrics. The buyer accepts the declared provider as the source of truth for the buy. When absent, buyers should apply their own measurement defaults.

    Type Declaration

    • provider: string

      Measurement provider(s) used for this product (e.g., 'Google Ad Manager with IAS viewability', 'Nielsen DAR', 'Geopath for DOOH impressions')

    • Optionalnotes?: string

      Additional details about measurement methodology in plain language (e.g., 'MRC-accredited viewability. 50% in-view for 1s display / 2s video', 'Panel-based demographic measurement updated monthly')

    reporting_capabilities?: ReportingCapabilities
    creative_policy?: CreativePolicy
    is_custom?: boolean

    Whether this is a custom product

    property_targeting_allowed?: boolean

    Whether buyers can filter this product to a subset of its publisher_properties. When false (default), the product is 'all or nothing' - buyers must accept all properties or the product is excluded from property_list filtering results.

    data_provider_signals?: DataProviderSignalSelector[]

    Data provider signals available for this product. Buyers fetch signal definitions from each data provider's adagents.json and can verify agent authorization.

    signal_targeting_allowed?: boolean

    Whether buyers can filter this product to a subset of its data_provider_signals. When false (default), the product includes all listed signals as a bundle. When true, buyers can target specific signals.

    catalog_types?: CatalogType[]

    Catalog types this product supports for catalog-driven campaigns. A sponsored product listing declares ["product"], a job board declares ["job", "offering"]. Buyers match synced catalogs to products via this field.

    metric_optimization?: {
        supported_metrics: (
            | "clicks"
            | "views"
            | "completed_views"
            | "viewed_seconds"
            | "attention_seconds"
            | "attention_score"
            | "engagements"
            | "follows"
            | "saves"
            | "profile_visits"
            | "reach"
        )[];
        supported_reach_units?: ReachUnit[];
        supported_view_durations?: number[];
        supported_targets?: ("cost_per" | "threshold_rate")[];
    }

    Metric optimization capabilities for this product. Presence indicates the product supports optimization_goals with kind: 'metric'. No event source or conversion tracking setup required — the seller tracks these metrics natively.

    Type Declaration

    • supported_metrics: (
          | "clicks"
          | "views"
          | "completed_views"
          | "viewed_seconds"
          | "attention_seconds"
          | "attention_score"
          | "engagements"
          | "follows"
          | "saves"
          | "profile_visits"
          | "reach"
      )[]

      Metric kinds this product can optimize for. Buyers should only request metric goals for kinds listed here.

    • Optionalsupported_reach_units?: ReachUnit[]

      Reach units this product can optimize for. Required when supported_metrics includes 'reach'. Buyers must set reach_unit to a value in this list on reach optimization goals — sellers reject unsupported values.

    • Optionalsupported_view_durations?: number[]

      Video view duration thresholds (in seconds) this product supports for completed_views goals. Only relevant when supported_metrics includes 'completed_views'. When absent, the seller uses their platform default. Buyers must set view_duration_seconds to a value in this list — sellers reject unsupported values.

    • Optionalsupported_targets?: ("cost_per" | "threshold_rate")[]

      Target kinds available for metric goals on this product. Values match target.kind on the optimization goal. Only these target kinds are accepted — goals with unlisted target kinds will be rejected. When omitted, buyers can set target-less metric goals (maximize volume within budget) but cannot set specific targets.

    max_optimization_goals?: number

    Maximum number of optimization_goals this product accepts on a package. When absent, no limit is declared. Most social platforms accept only 1 goal — buyers sending arrays longer than this value should expect the seller to use only the highest-priority (lowest priority number) goal.

    measurement_readiness?: MeasurementReadiness
    conversion_tracking?: {
        action_sources?: ActionSource[];
        supported_targets?: ("cost_per" | "per_ad_spend" | "maximize_value")[];
        platform_managed?: boolean;
    }

    Conversion event tracking for this product. Presence indicates the product supports optimization_goals with kind: 'event'. Seller-level capabilities (supported event types, UID types, attribution windows) are declared in get_adcp_capabilities.

    Type Declaration

    • Optionalaction_sources?: ActionSource[]

      Action sources relevant to this product (e.g. a retail media product might have 'in_store' and 'website', while a display product might only have 'website')

    • Optionalsupported_targets?: ("cost_per" | "per_ad_spend" | "maximize_value")[]

      Target kinds available for event goals on this product. Values match target.kind on the optimization goal. cost_per: target cost per conversion event. per_ad_spend: target return on ad spend (requires value_field on event sources). maximize_value: maximize total conversion value without a specific ratio target (requires value_field). Only these target kinds are accepted — goals with unlisted target kinds will be rejected. A goal without a target implicitly maximizes conversion count within budget — no declaration needed for that mode. When omitted, buyers can still set target-less event goals.

    • Optionalplatform_managed?: boolean

      Whether the seller provides its own always-on measurement (e.g. Amazon sales attribution for Amazon advertisers). When true, sync_event_sources response will include seller-managed event sources with managed_by='seller'.

    catalog_match?: {
        matched_gtins?: string[];
        matched_ids?: string[];
        matched_count?: number;
        submitted_count: number;
    }

    When the buyer provides a catalog on get_products, indicates which catalog items are eligible for this product. Only present for products where catalog matching is relevant (e.g., sponsored product listings, job boards, hotel ads).

    Type Declaration

    • Optionalmatched_gtins?: string[]

      GTINs from the buyer's catalog that are eligible on this product's inventory. Standard GTIN formats (GTIN-8 through GTIN-14). Only present for product-type catalogs with GTIN matching.

    • Optionalmatched_ids?: string[]

      Item IDs from the buyer's catalog that matched this product's inventory. The ID type depends on the catalog type and content_id_type (e.g., SKUs for product catalogs, job_ids for job catalogs, offering_ids for offering catalogs).

    • Optionalmatched_count?: number

      Number of catalog items that matched this product's inventory.

    • submitted_count: number

      Total catalog items evaluated from the buyer's catalog.

    brief_relevance?: string

    Explanation of why this product matches the brief (only included when brief is provided)

    expires_at?: string

    Expiration timestamp. After this time, the product may no longer be available for purchase and create_media_buy may reject packages referencing it.

    product_card?: { format_id: FormatID; manifest: {} }

    Optional standard visual card (300x400px) for displaying this product in user interfaces. Can be rendered via preview_creative or pre-generated.

    Type Declaration

    • format_id: FormatID
    • manifest: {}

      Asset manifest for rendering the card, structure defined by the format

    product_card_detailed?: { format_id: FormatID; manifest: {} }

    Optional detailed card with carousel and full specifications. Provides rich product presentation similar to media kit pages.

    Type Declaration

    • format_id: FormatID
    • manifest: {}

      Asset manifest for rendering the detailed card, structure defined by the format

    collections?: CollectionSelector[]

    Collections available in this product. Each entry references collections declared in an adagents.json by domain and collection ID. Buyers resolve full collection objects from the referenced adagents.json.

    collection_targeting_allowed?: boolean

    Whether buyers can target a subset of this product's collections. When false (default), the product is a bundle — buyers get all listed collections. When true, buyers can select specific collections in the media buy.

    installments?: Installment[]

    Specific installments included in this product. Each installment references its parent collection via collection_id when the product spans multiple collections. When absent with collections present, the product covers the collections broadly (run-of-collection).

    enforced_policies?: string[]

    Registry policy IDs the seller enforces for this product. Enforcement level comes from the policy registry. Buyers can filter products by required policies.

    trusted_match?: {
        context_match: boolean;
        identity_match?: boolean;
        response_types?: TMPResponseType[];
        dynamic_brands?: boolean;
        providers?: {
            agent_url: string;
            context_match?: boolean;
            identity_match?: boolean;
        }[];
    }

    Trusted Match Protocol capabilities for this product. When present, the product supports real-time contextual and/or identity matching via TMP. Buyers use this to determine what response types the publisher can accept and whether brands can be selected dynamically at match time.

    Type Declaration

    • context_match: boolean

      Whether this product supports Context Match requests. When true, the publisher's TMP router will send context match requests to registered providers for this product's inventory.

    • Optionalidentity_match?: boolean

      Whether this product supports Identity Match requests. When true, the publisher's TMP router will send identity match requests to evaluate user eligibility.

    • Optionalresponse_types?: TMPResponseType[]

      What the publisher can accept back from context match.

    • Optionaldynamic_brands?: boolean

      Whether the buyer can select a brand at match time. When false (default), the brand must be specified on the media buy/package. When true, the buyer's offer can include any brand — the publisher applies approval rules at match time. Enables multi-brand agreements where the holding company or buyer agent selects brand based on context.

    • Optionalproviders?: { agent_url: string; context_match?: boolean; identity_match?: boolean }[]

      TMP providers integrated with this product's inventory. Each entry identifies a provider by agent_url (from the registry) and declares what match types it supports for this product. The product-level context_match and identity_match booleans declare what the product supports overall; the per-provider booleans declare which provider handles each match type. Enables buyer discovery: 'find products where a specific provider does context matching.'

    material_submission?: {
        url?: string;
        email?: string;
        instructions?: string;
        ext?: ExtensionObject;
    }

    Instructions for submitting physical creative materials (print, static OOH, cinema). Present only for products requiring physical delivery outside the digital creative assignment flow. Buyer agents MUST validate url and email domains against the seller's known domains (from adagents.json) before submitting materials. Never auto-submit without human confirmation.

    Type Declaration

    • Optionalurl?: string

      HTTPS URL for uploading or submitting physical creative materials

    • Optionalemail?: string

      Email address for creative material submission

    • Optionalinstructions?: string

      Human-readable instructions for material submission (file naming conventions, shipping address, etc.)

    • Optionalext?: ExtensionObject
    ext?: ExtensionObject