Optionalcontext?: Omit<Omit<{}, "bank">, "authentication"> & { authentication?: unknown }Optionalgovernance_context?: stringOptionalnotification_type?: "scheduled" | "final" | "delayed" | "adjusted" | "window_update"Type of webhook notification (only present in webhook deliveries): scheduled = regular periodic update, final = campaign completed, delayed = data not yet available, adjusted = resending period with corrected data (same window), window_update = resending period with a wider measurement window (e.g., C3 superseding live, C7 superseding C3)
Optionalpartial_data?: booleanIndicates if any media buys in this webhook have missing/delayed data (only present in webhook deliveries)
Optionalunavailable_count?: numberNumber of media buys with reporting_delayed or failed status (only present in webhook deliveries when partial_data is true)
Optionalsequence_number?: numberSequential notification number (only present in webhook deliveries, starts at 1)
Optionalnext_expected_at?: stringISO 8601 timestamp for next expected notification (only present in webhook deliveries when notification_type is not 'final')
Date range for the report. All periods use UTC timezone.
ISO 8601 start timestamp in UTC (e.g., 2024-02-05T00:00:00Z)
ISO 8601 end timestamp in UTC (e.g., 2024-02-05T23:59:59Z)
Optionalcurrency?: stringISO 4217 currency code
Optionalattribution_window?: {Optionalpost_click?: {Post-click attribution window. Conversions occurring within this duration after a click are attributed to the ad.
Number of time units. Must be 1 when unit is 'campaign'.
Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.
Optionalpost_view?: {Post-view attribution window. Conversions occurring within this duration after an ad impression (without click) are attributed to the ad.
Number of time units. Must be 1 when unit is 'campaign'.
Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.
Optionalmodel?: AttributionModelOptionalaggregated_totals?: {Combined metrics across all returned media buys. Only included in API responses (get_media_buy_delivery), not in webhook notifications.
Total impressions delivered across all media buys
Total amount spent across all media buys
Optionalclicks?: numberTotal clicks across all media buys (if applicable)
Optionalcompleted_views?: numberTotal audio/video completions across all media buys (if applicable)
Optionalviews?: numberTotal views across all media buys (if applicable)
Optionalconversions?: numberTotal conversions across all media buys (if applicable)
Optionalconversion_value?: numberTotal conversion value across all media buys (if applicable)
Optionalroas?: numberAggregate return on ad spend across all media buys (total conversion_value / total spend)
Optionalnew_to_brand_rate?: numberFraction of total conversions across all media buys from first-time brand buyers (weighted by conversion volume, not a simple average of per-buy rates)
Optionalcost_per_acquisition?: numberAggregate cost per conversion across all media buys (total spend / total conversions)
Optionalcompletion_rate?: numberAggregate completion rate across all media buys (weighted by impressions, not a simple average of per-buy rates)
Optionalreach?: numberDeduplicated reach across all media buys (if the seller can deduplicate across buys; otherwise sum of per-buy reach). Only present when all media buys share the same reach_unit. Omitted when reach units are heterogeneous — use per-buy reach values instead.
Optionalreach_unit?: ReachUnitUnit of measurement for reach. Only present when all aggregated media buys use the same reach_unit.
Optionalfrequency?: numberAverage frequency per reach unit across all media buys (impressions / reach when cross-buy deduplication is available). Only present when reach is present.
Number of media buys included in the response
Optionalmetric_aggregates?: (Cross-buy delivery aggregates partitioned by qualifier. Row-symmetric with package.committed_metrics and by_package[].missing_metrics — same atomic unit (scope, metric_id, qualifier) — so reconciliation collapses to a row-level join on the tuple. Granularity rule: one row per (metric_id, full-qualifier-set), reported at the finest available granularity; buyers re-aggregate up if they want a coarser view. Used only for metrics with non-empty qualifier sets — unqualified metrics (impressions, spend, media_buy_count, etc.) remain at the top of aggregated_totals. Mutual exclusion MUST: for any metric_id appearing in metric_aggregates, the corresponding top-level scalar in aggregated_totals MUST be omitted (not zeroed) — avoids duplicate sources of truth. The qualifier vocabulary on this delivery surface is closed today (additionalProperties: false, same content as committed_metrics.qualifier) but is expected to diverge from contract qualifier in future minors as transparency disclosures buyers don't commit to ship delivery-only (e.g., tracker_firing pending #3832 resolution). Each row carries a value plus inlined per-metric component fields (e.g., measurable_impressions and viewable_impressions for viewable_rate; spend and conversions for cost_per_acquisition). Per-buy totals keeps its flat shape — each buy is single-qualifier by definition; only the aggregate spans qualifiers. Qualifier-set drift across reports: when a campaign gains a new qualifier mid-flight (e.g., adds tracker_firing partitioning in week 2), prior periods' rows remain valid at their original granularity; buyers SHOULD NOT retroactively repartition.
Array of delivery data for media buys. When used in webhook notifications, may contain multiple media buys aggregated by publisher. When used in get_media_buy_delivery API responses, typically contains requested media buys.
Optionalerrors?: {Task-specific errors and warnings (e.g., missing delivery data, reporting platform issues)
Optionalsandbox?: booleanWhen true, this response contains simulated data from sandbox mode.
Optionalext?: Omit<Omit<{}, "bank">, "authentication"> & { authentication?: unknown }Optionalsummary: string
Governance context token issued by the account's governance agent during check_governance. Buyers attach it to governed purchase requests (media buys, rights acquisitions, signal activations, creative services); sellers persist it and include it on all subsequent governance calls for that action's lifecycle. An account binds to one governance agent (see sync_governance); governance is phased across
purchase/modification/delivery, not partitioned across specialist agents, so the envelope carries a single token for the full lifecycle.Value format: governance agents MUST emit a compact JWS per the AdCP JWS profile (see Security — Signed Governance Context). Sellers MAY verify; sellers that do not verify MUST persist and forward the token unchanged. In 3.1 all sellers MUST verify. Non-JWS values from pre-3.0 governance agents are deprecated.
This is the primary correlation key for audit and reporting across the governance lifecycle.