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

    Interface ReportingCapabilities

    Reporting capabilities available for a product

    interface ReportingCapabilities {
        available_reporting_frequencies: [
            ReportingFrequency,
            ...ReportingFrequency[],
        ];
        expected_delay_minutes: number;
        timezone: string;
        supports_webhooks: boolean;
        reporting_delivery_offering_ids?: string[];
        available_metrics: AvailableMetric[];
        vendor_metrics?: {
            vendor: BrandReference;
            metric_id: string;
            vendor_relationship?: VendorRelationship;
        }[];
        supports_creative_breakdown?: boolean;
        supports_format_breakdown?: boolean;
        supports_keyword_breakdown?: boolean;
        supports_geo_breakdown?: GeographicBreakdownSupport;
        supports_device_type_breakdown?: boolean;
        supports_device_platform_breakdown?: boolean;
        supports_audience_breakdown?: boolean;
        supports_demographic_breakdown?: {
            age?: {};
            demographic_systems?: [DemographicSystem, ...DemographicSystem[]];
            may_suppress_small_cells: boolean;
        };
        supports_placement_breakdown?: boolean;
        supports_property_breakdown?: boolean;
        supports_collection_breakdown?: boolean;
        supports_installment_breakdown?: boolean;
        supports_collection_property_breakdown?: boolean;
        supports_installment_property_breakdown?: boolean;
        supports_placement_property_breakdown?: boolean;
        supports_spot_breakdown?: SpotReportingCapability;
        date_range_support: "date_range"
        | "lifetime_only";
        windowed_pull_granularities?: ReportingFrequency[];
        measurement_windows?: [MeasurementWindow, ...MeasurementWindow[]];
    }
    Index
    available_reporting_frequencies: [ReportingFrequency, ...ReportingFrequency[]]

    Supported reporting frequency options

    1

    expected_delay_minutes: number

    Expected delay in minutes before reporting data becomes available (e.g., 240 for 4-hour delay)

    timezone: string

    Timezone for this product's reporting periods. Use 'UTC' or an IANA timezone (e.g., 'America/New_York'). This explicit reporting clock may equal Account.timezone or differ when the upstream platform reports on a separate boundary, so buyers MUST NOT infer it from Account.timezone. It is the reporting timezone for this product's delivery reporting: get_media_buy_delivery start_date, end_date, and daily_breakdown dates are calendar dates in it, and reporting_period boundaries and daily, weekly, or monthly windows fall on its calendar boundaries. Buyers MUST use this value for daily/monthly report alignment.

    supports_webhooks: boolean

    Whether this product supports webhook-based reporting notifications

    reporting_delivery_offering_ids?: string[]

    Product-scoped subset of get_adcp_capabilities.media_buy.reporting_delivery.offerings[].offering_id that packages using this product can satisfy. This binds seller-wide managed-delivery offerings to product/package eligibility. An empty array explicitly declares no managed offering; absence means product-level applicability is unknown and MUST NOT be inferred from the seller-wide list. Account, seat, credential, or provider constraints may narrow support further during sync_accounts validation.

    available_metrics: AvailableMetric[]

    Metrics available in reporting. Impressions and spend are always implicitly included. When a creative format declares reported_metrics, buyers receive the intersection of these product-level metrics and the format's reported_metrics.

    vendor_metrics?: {
        vendor: BrandReference;
        metric_id: string;
        vendor_relationship?: VendorRelationship;
    }[]

    Vendor-defined metrics this product can report, beyond the closed available_metrics enum. Each entry is a pointer ({ vendor, metric_id }) into the vendor's metric catalog — the canonical definition (standard alignment, accreditations, methodology, unit, human-readable description) lives at the vendor's get_adcp_capabilities.measurement.metrics[], queried once per vendor when needed. Use this for proprietary metrics like attention scores, emissions, panel-based demographics, or platform-native social metrics not yet in the standard enum. Sellers populate values in delivery via delivery-metrics.json#/properties/vendor_metric_values. The metric is identified by the tuple (vendor, metric_id); identifiers are namespaced by the vendor, so the same metric_id may mean different things in different vendors' vocabularies. Semantic uniqueness key is (vendor.domain, vendor.brand_id, metric_id); sellers MUST de-duplicate before emission and MUST NOT declare the same vendor metric twice. Buyers MAY treat duplicate (vendor, metric_id) rows as a seller-side conformance bug. (JSON Schema uniqueItems is not used here because BrandRef carries optional fields whose absence/presence would defeat deep-equal — uniqueness is on the semantic key, enforced at build/validation time on the seller side.) Promotion path: when the industry converges on a metric via a published standard, the spec adds it to the closed available_metrics enum and the vendor extensions become historical aliases. The vendor MAY resolve to the selling party's own brand.json — a seller MAY be its own measurement vendor (DOOH sensor networks, retail-media closed loops, walled gardens) provided it publishes the metric in an agents[type='measurement'] catalog like any other vendor and declares the relationship via vendor_relationship; the catalog contract is not relaxed for first-party measurement.

    supports_creative_breakdown?: boolean

    Whether this product supports creative-level metric breakdowns in delivery reporting (by_creative within by_package)

    supports_format_breakdown?: boolean

    Whether this product supports canonical creative-format breakdowns in GET delivery reporting (by_format within by_package, keyed by format_kind). This is independent from supports_creative_breakdown because a seller may expose aggregate format-grain reporting without exposing individual creative performance.

    supports_keyword_breakdown?: boolean

    Whether this product supports keyword-level metric breakdowns in delivery reporting (by_keyword within by_package)

    supports_geo_breakdown?: GeographicBreakdownSupport
    supports_device_type_breakdown?: boolean

    Whether this product supports device type breakdowns in delivery reporting (by_device_type within by_package)

    supports_device_platform_breakdown?: boolean

    Whether this product supports device platform breakdowns in delivery reporting (by_device_platform within by_package)

    supports_audience_breakdown?: boolean

    Whether this product supports audience segment breakdowns in delivery reporting (by_audience within by_package)

    supports_demographic_breakdown?: {
        age?: {};
        demographic_systems?: [DemographicSystem, ...DemographicSystem[]];
        may_suppress_small_cells: boolean;
    }

    Type Declaration

    • Optionalage?: {}

      Machine-comparable age ranges this product can report.

    • Optionaldemographic_systems?: [DemographicSystem, ...DemographicSystem[]]

      Measurement-system notations this product may return. A code remains opaque unless its capability interval and response row also carry a canonical age predicate.

      1

    • may_suppress_small_cells: boolean

      Whether privacy, policy, or measurement thresholds may suppress otherwise reportable demographic rows. When true, buyers must inspect by_demographic_suppressed before testing whether rows reconcile to package totals.

    supports_placement_breakdown?: boolean

    Whether this product supports placement breakdowns in delivery reporting (by_placement within by_package)

    supports_property_breakdown?: boolean

    Whether this product supports property breakdowns in delivery reporting (by_property within by_package).

    supports_collection_breakdown?: boolean

    Whether this product supports collection breakdowns in delivery reporting (by_collection within by_package).

    supports_installment_breakdown?: boolean

    Whether this product supports installment breakdowns in delivery reporting (by_installment within by_package).

    supports_collection_property_breakdown?: boolean

    Whether this product supports collection × property intersection reporting (by_collection_property within by_package).

    supports_installment_property_breakdown?: boolean

    Whether this product supports installment × property intersection reporting (by_installment_property within by_package).

    supports_placement_property_breakdown?: boolean

    Whether this product supports placement × property intersection reporting (by_placement_property within by_package).

    supports_spot_breakdown?: SpotReportingCapability
    date_range_support: "date_range" | "lifetime_only"

    Whether delivery data can be filtered to arbitrary date ranges. 'date_range' means the platform supports start_date/end_date parameters. 'lifetime_only' means the platform returns campaign lifetime totals and date range parameters are not accepted.

    windowed_pull_granularities?: ReportingFrequency[]

    Granularities at which this product honors per-window pulls on get_media_buy_delivery (via request time_granularity + include_window_breakdown: true). Closes the GET-side half of the snapshot/log two-paths-parity contract for data-bearing events: a buyer who missed a webhook fire at any granularity listed here can reconstruct an identical payload by polling. Capability-scoped MUST — sellers MUST honor pulls at any granularity declared here, and MUST return UNSUPPORTED_GRANULARITY for pulls outside the set. Sellers MAY emit higher-frequency webhooks than they expose for pull (common where the webhook is a Kafka tap and historical reads go through a warehouse with coarser granularity); buyers see the gap up front via this capability and treat the webhook as primary for those frequencies. Absent or empty means the product only supports cumulative date-range pulls and full per-window recovery via GET is unavailable — see snapshot-and-log Rule 4.

    measurement_windows?: [MeasurementWindow, ...MeasurementWindow[]]

    Measurement maturation stages available for this product. Used by any channel where billing-grade data is produced in phases rather than arriving final on day one. Examples: broadcast/linear TV (Live → C3 → C7 DVR accumulation), DOOH (tentative plays → post-IVT/fraud-check final), digital with IVT filtering (raw → GIVT filtered → SIVT filtered), podcast (7-day downloads → 30-day downloads). Each window defines an accumulation period and expected data availability. When present, delivery reports reference a specific window_id. Sellers whose data is final on first delivery typically omit this.

    1