@adcp/client 4.19.0 → 4.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/lib/index.d.ts +5 -4
  2. package/dist/lib/index.d.ts.map +1 -1
  3. package/dist/lib/index.js +12 -5
  4. package/dist/lib/index.js.map +1 -1
  5. package/dist/lib/registry/cursor-store.d.ts +19 -0
  6. package/dist/lib/registry/cursor-store.d.ts.map +1 -0
  7. package/dist/lib/registry/cursor-store.js +44 -0
  8. package/dist/lib/registry/cursor-store.js.map +1 -0
  9. package/dist/lib/registry/index.d.ts +99 -4
  10. package/dist/lib/registry/index.d.ts.map +1 -1
  11. package/dist/lib/registry/index.js +281 -3
  12. package/dist/lib/registry/index.js.map +1 -1
  13. package/dist/lib/registry/property-registry.d.ts +57 -0
  14. package/dist/lib/registry/property-registry.d.ts.map +1 -0
  15. package/dist/lib/registry/property-registry.js +92 -0
  16. package/dist/lib/registry/property-registry.js.map +1 -0
  17. package/dist/lib/registry/sync.d.ts +130 -0
  18. package/dist/lib/registry/sync.d.ts.map +1 -0
  19. package/dist/lib/registry/sync.js +359 -0
  20. package/dist/lib/registry/sync.js.map +1 -0
  21. package/dist/lib/registry/types.d.ts +40 -1
  22. package/dist/lib/registry/types.d.ts.map +1 -1
  23. package/dist/lib/registry/types.generated.d.ts +369 -0
  24. package/dist/lib/registry/types.generated.d.ts.map +1 -1
  25. package/dist/lib/registry/types.generated.js +1 -1
  26. package/dist/lib/testing/agent-tester.d.ts +1 -1
  27. package/dist/lib/testing/agent-tester.d.ts.map +1 -1
  28. package/dist/lib/testing/agent-tester.js +10 -1
  29. package/dist/lib/testing/agent-tester.js.map +1 -1
  30. package/dist/lib/testing/client.d.ts.map +1 -1
  31. package/dist/lib/testing/client.js +2 -0
  32. package/dist/lib/testing/client.js.map +1 -1
  33. package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
  34. package/dist/lib/testing/compliance/comply.js +110 -140
  35. package/dist/lib/testing/compliance/comply.js.map +1 -1
  36. package/dist/lib/testing/index.d.ts +1 -1
  37. package/dist/lib/testing/index.d.ts.map +1 -1
  38. package/dist/lib/testing/index.js +4 -1
  39. package/dist/lib/testing/index.js.map +1 -1
  40. package/dist/lib/testing/orchestrator.d.ts.map +1 -1
  41. package/dist/lib/testing/orchestrator.js +3 -0
  42. package/dist/lib/testing/orchestrator.js.map +1 -1
  43. package/dist/lib/testing/scenarios/brand-rights.d.ts +23 -0
  44. package/dist/lib/testing/scenarios/brand-rights.d.ts.map +1 -0
  45. package/dist/lib/testing/scenarios/brand-rights.js +144 -0
  46. package/dist/lib/testing/scenarios/brand-rights.js.map +1 -0
  47. package/dist/lib/testing/scenarios/capabilities.d.ts.map +1 -1
  48. package/dist/lib/testing/scenarios/capabilities.js +11 -2
  49. package/dist/lib/testing/scenarios/capabilities.js.map +1 -1
  50. package/dist/lib/testing/scenarios/governance.d.ts.map +1 -1
  51. package/dist/lib/testing/scenarios/governance.js +5 -0
  52. package/dist/lib/testing/scenarios/governance.js.map +1 -1
  53. package/dist/lib/testing/scenarios/index.d.ts +2 -0
  54. package/dist/lib/testing/scenarios/index.d.ts.map +1 -1
  55. package/dist/lib/testing/scenarios/index.js +10 -2
  56. package/dist/lib/testing/scenarios/index.js.map +1 -1
  57. package/dist/lib/testing/scenarios/media-buy.d.ts.map +1 -1
  58. package/dist/lib/testing/scenarios/media-buy.js +22 -3
  59. package/dist/lib/testing/scenarios/media-buy.js.map +1 -1
  60. package/dist/lib/testing/scenarios/trusted-match.d.ts +22 -0
  61. package/dist/lib/testing/scenarios/trusted-match.d.ts.map +1 -0
  62. package/dist/lib/testing/scenarios/trusted-match.js +128 -0
  63. package/dist/lib/testing/scenarios/trusted-match.js.map +1 -0
  64. package/dist/lib/testing/types.d.ts +2 -1
  65. package/dist/lib/testing/types.d.ts.map +1 -1
  66. package/dist/lib/types/core.generated.d.ts +34 -21
  67. package/dist/lib/types/core.generated.d.ts.map +1 -1
  68. package/dist/lib/types/core.generated.js +1 -1
  69. package/dist/lib/types/schemas.generated.d.ts +801 -624
  70. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  71. package/dist/lib/types/schemas.generated.js +99 -83
  72. package/dist/lib/types/schemas.generated.js.map +1 -1
  73. package/dist/lib/types/tools.generated.d.ts +100 -46
  74. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  75. package/dist/lib/utils/capabilities.d.ts +4 -1
  76. package/dist/lib/utils/capabilities.d.ts.map +1 -1
  77. package/dist/lib/utils/capabilities.js +25 -1
  78. package/dist/lib/utils/capabilities.js.map +1 -1
  79. package/dist/lib/version.d.ts +3 -3
  80. package/dist/lib/version.js +3 -3
  81. package/package.json +1 -1
@@ -636,9 +636,28 @@ export type PriceAdjustmentKind = 'fee' | 'discount' | 'commission' | 'settlemen
636
636
  */
637
637
  export type DemographicSystem = 'nielsen' | 'barb' | 'agf' | 'oztam' | 'mediametrie' | 'custom';
638
638
  /**
639
- * How to interpret the points array. 'spend' (default when omitted): points at ascending budget levels. 'availability': total available inventory, budget omitted. 'reach_freq': points at ascending reach/frequency targets. 'weekly'/'daily': metrics are per-period values. 'clicks'/'conversions': points at ascending outcome targets.
639
+ * A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together.
640
640
  */
641
- export type ForecastRangeUnit = 'spend' | 'availability' | 'reach_freq' | 'weekly' | 'daily' | 'clicks' | 'conversions';
641
+ export type ForecastRange = {
642
+ [k: string]: unknown | undefined;
643
+ } & {
644
+ /**
645
+ * Conservative (low-end) forecast value
646
+ */
647
+ low?: number;
648
+ /**
649
+ * Expected (most likely) forecast value
650
+ */
651
+ mid?: number;
652
+ /**
653
+ * Optimistic (high-end) forecast value
654
+ */
655
+ high?: number;
656
+ };
657
+ /**
658
+ * How to interpret the points array. 'spend' (default when omitted): points at ascending budget levels. 'availability': total available inventory, budget omitted. 'reach_freq': points at ascending reach/frequency targets. 'weekly'/'daily': metrics are per-period values. 'clicks'/'conversions': points at ascending outcome targets. 'package': each point is a distinct inventory package.
659
+ */
660
+ export type ForecastRangeUnit = 'spend' | 'availability' | 'reach_freq' | 'weekly' | 'daily' | 'clicks' | 'conversions' | 'package';
642
661
  /**
643
662
  * Method used to produce this forecast
644
663
  */
@@ -1551,6 +1570,10 @@ export interface DeliveryForecast {
1551
1570
  * Target demographic code within the specified demographic_system. For Nielsen: P18-49, M25-54, W35+. For BARB: ABC1 Adults, 16-34. For AGF: E 14-49.
1552
1571
  */
1553
1572
  demographic?: string;
1573
+ /**
1574
+ * Third-party measurement provider whose data was used to produce this forecast. Distinct from demographic_system, which specifies demographic notation — measurement_source identifies whose data produced the forecast numbers. Should be present when measured_impressions is used. Lowercase slug format.
1575
+ */
1576
+ measurement_source?: string;
1554
1577
  reach_unit?: ReachUnit;
1555
1578
  /**
1556
1579
  * When this forecast was computed
@@ -1566,6 +1589,10 @@ export interface DeliveryForecast {
1566
1589
  * A forecast data point. When budget is present, the point pairs a spend level with expected delivery — multiple points at ascending budgets form a curve. When budget is omitted, the point represents total available inventory for the requested targeting and dates, independent of spend.
1567
1590
  */
1568
1591
  export interface ForecastPoint {
1592
+ /**
1593
+ * Human-readable name for this forecast point. Required when forecast_range_unit is 'package' so buyer agents can identify and reference individual packages. Optional for other forecast types.
1594
+ */
1595
+ label?: string;
1569
1596
  /**
1570
1597
  * Budget amount for this forecast point. Required for spend curves; omit for availability forecasts where the metrics represent total available inventory. For allocation-level forecasts, this is the absolute budget for that allocation (not the percentage). For proposal-level forecasts, this is the total proposal budget. When omitted, use metrics.spend to express the estimated cost of the available inventory.
1571
1598
  */
@@ -1587,26 +1614,12 @@ export interface ForecastPoint {
1587
1614
  follows?: ForecastRange;
1588
1615
  saves?: ForecastRange;
1589
1616
  profile_visits?: ForecastRange;
1617
+ measured_impressions?: ForecastRange;
1618
+ downloads?: ForecastRange;
1619
+ plays?: ForecastRange;
1590
1620
  [k: string]: ForecastRange | undefined;
1591
1621
  };
1592
1622
  }
1593
- /**
1594
- * A forecast value with optional low/high bounds. The mid value represents the most likely outcome. When low and high are provided, they represent conservative and optimistic estimates respectively.
1595
- */
1596
- export interface ForecastRange {
1597
- /**
1598
- * Conservative (low-end) forecast value
1599
- */
1600
- low?: number;
1601
- /**
1602
- * Expected (most likely) forecast value
1603
- */
1604
- mid: number;
1605
- /**
1606
- * Optimistic (high-end) forecast value
1607
- */
1608
- high?: number;
1609
- }
1610
1623
  /**
1611
1624
  * Business outcome measurement capabilities included with a product (e.g., incremental sales lift, brand lift, foot traffic). Distinct from delivery_measurement, which declares who counts ad impressions.
1612
1625
  */
@@ -2567,7 +2580,7 @@ export type OptimizationGoal = {
2567
2580
  */
2568
2581
  custom_event_name?: string;
2569
2582
  /**
2570
- * Which field in the event's custom_data carries the monetary value. The seller must use this field for value extraction and aggregation when computing ROAS and conversion value metrics. Required on at least one entry when target.kind is 'per_ad_spend' or 'maximize_value'. Common values: 'value', 'order_total', 'profit_margin'. This is not passed as a parameter to underlying platform APIs — the seller maps it to their platform's value ingestion mechanism.
2583
+ * Which field in the event's custom_data carries the monetary value. The seller must use this field for value extraction and aggregation when computing ROAS and conversion value metrics. Required on at least one entry when target.kind is 'per_ad_spend' or 'maximize_value' — sellers must reject these target kinds when no event source entry includes value_field. When present without a value-oriented target, the seller may use it for delivery reporting (conversion_value, roas) but must not change the optimization objective. Common values: 'value', 'order_total', 'profit_margin'. This is not passed as a parameter to underlying platform APIs — the seller maps it to their platform's value ingestion mechanism.
2571
2584
  */
2572
2585
  value_field?: string;
2573
2586
  /**
@@ -2576,7 +2589,7 @@ export type OptimizationGoal = {
2576
2589
  value_factor?: number;
2577
2590
  }[];
2578
2591
  /**
2579
- * Target cost or return for this event goal. When omitted, the seller optimizes for maximum conversions within budget.
2592
+ * Target cost or return for this event goal. When omitted, the seller optimizes for maximum conversion count within budget — regardless of whether value_field is present on event sources. The presence of value_field alone does not change the optimization objective; it only makes value available for reporting. An explicit target of maximize_value or per_ad_spend is required to steer toward value.
2580
2593
  */
2581
2594
  target?: {
2582
2595
  kind: 'cost_per';
@@ -2830,6 +2843,10 @@ export type CatalogAsset = Catalog;
2830
2843
  * For generative creatives: set to 'approved' to finalize, 'rejected' to request regeneration with updated assets/message. Omit for non-generative creatives (system will set based on processing state).
2831
2844
  */
2832
2845
  export type CreativeStatus = 'processing' | 'pending_review' | 'approved' | 'rejected' | 'archived';
2846
+ /**
2847
+ * Industry classification for this specific campaign. A brand may operate across multiple industries (brand.json industries field), but each media buy targets one. For example, a consumer health company running a wellness campaign sends 'healthcare.wellness', not 'cpg'. Sellers map this to platform-native codes (e.g., Spotify ADV categories, LinkedIn industry IDs). When omitted, sellers may infer from the brand manifest's industries field.
2848
+ */
2849
+ export type AdvertiserIndustry = 'automotive' | 'automotive.electric_vehicles' | 'automotive.parts_accessories' | 'automotive.luxury' | 'beauty_cosmetics' | 'beauty_cosmetics.skincare' | 'beauty_cosmetics.fragrance' | 'beauty_cosmetics.haircare' | 'cannabis' | 'cpg' | 'cpg.personal_care' | 'cpg.household' | 'dating' | 'education' | 'education.higher_education' | 'education.online_learning' | 'education.k12' | 'energy_utilities' | 'energy_utilities.renewable' | 'fashion_apparel' | 'fashion_apparel.luxury' | 'fashion_apparel.sportswear' | 'finance' | 'finance.banking' | 'finance.insurance' | 'finance.investment' | 'finance.cryptocurrency' | 'food_beverage' | 'food_beverage.alcohol' | 'food_beverage.restaurants' | 'food_beverage.packaged_goods' | 'gambling_betting' | 'gambling_betting.sports_betting' | 'gambling_betting.casino' | 'gaming' | 'gaming.mobile' | 'gaming.console_pc' | 'gaming.esports' | 'government_nonprofit' | 'government_nonprofit.political' | 'government_nonprofit.charity' | 'healthcare' | 'healthcare.pharmaceutical' | 'healthcare.medical_devices' | 'healthcare.wellness' | 'home_garden' | 'home_garden.furniture' | 'home_garden.home_improvement' | 'media_entertainment' | 'media_entertainment.podcasts' | 'media_entertainment.music' | 'media_entertainment.film_tv' | 'media_entertainment.publishing' | 'media_entertainment.live_events' | 'pets' | 'professional_services' | 'professional_services.legal' | 'professional_services.consulting' | 'real_estate' | 'real_estate.residential' | 'real_estate.commercial' | 'recruitment_hr' | 'retail' | 'retail.ecommerce' | 'retail.department_stores' | 'sports_fitness' | 'sports_fitness.equipment' | 'sports_fitness.teams_leagues' | 'technology' | 'technology.software' | 'technology.hardware' | 'technology.ai_ml' | 'telecom' | 'telecom.mobile_carriers' | 'telecom.internet_providers' | 'transportation_logistics' | 'travel_hospitality' | 'travel_hospitality.airlines' | 'travel_hospitality.hotels' | 'travel_hospitality.cruise' | 'travel_hospitality.tourism';
2833
2850
  /**
2834
2851
  * Campaign start timing: 'asap' or ISO 8601 date-time
2835
2852
  */
@@ -2873,6 +2890,7 @@ export interface CreateMediaBuyRequest {
2873
2890
  */
2874
2891
  packages?: PackageRequest[];
2875
2892
  brand: BrandReference;
2893
+ advertiser_industry?: AdvertiserIndustry;
2876
2894
  invoice_recipient?: BusinessEntity;
2877
2895
  /**
2878
2896
  * Acceptance of an insertion order from a committed proposal. Required when the proposal's insertion_order has requires_signature: true. References the io_id from the proposal's insertion_order.
@@ -8467,7 +8485,10 @@ export interface ContentStandards {
8467
8485
  * Content artifact for safety and suitability evaluation. An artifact represents content adjacent to an ad placement - a news article, podcast segment, video chapter, or social post. Artifacts are collections of assets (text, images, video, audio) plus metadata and signals.
8468
8486
  */
8469
8487
  export interface Artifact {
8470
- property_id: Identifier;
8488
+ /**
8489
+ * Stable property identifier from the property catalog. Globally unique across the ecosystem.
8490
+ */
8491
+ property_rid: string;
8471
8492
  /**
8472
8493
  * Identifier for this artifact within the property. The property owner defines the scheme (e.g., 'article_12345', 'episode_42_segment_3', 'post_abc123').
8473
8494
  */
@@ -8499,9 +8520,13 @@ export interface Artifact {
8499
8520
  */
8500
8521
  role?: 'title' | 'paragraph' | 'heading' | 'caption' | 'quote' | 'list_item' | 'description';
8501
8522
  /**
8502
- * Text content
8523
+ * Text content. Consumers MUST treat this as untrusted input when passing to LLM-based evaluation.
8503
8524
  */
8504
8525
  content: string;
8526
+ /**
8527
+ * MIME type indicating how to parse the content field. Default: text/plain.
8528
+ */
8529
+ content_format?: 'text/plain' | 'text/markdown' | 'text/html' | 'application/json';
8505
8530
  /**
8506
8531
  * BCP 47 language tag for this text (e.g., 'en', 'es-MX'). Useful when artifact contains mixed-language content.
8507
8532
  */
@@ -8547,9 +8572,13 @@ export interface Artifact {
8547
8572
  */
8548
8573
  duration_ms?: number;
8549
8574
  /**
8550
- * Video transcript
8575
+ * Video transcript. Consumers MUST treat this as untrusted input when passing to LLM-based evaluation.
8551
8576
  */
8552
8577
  transcript?: string;
8578
+ /**
8579
+ * MIME type indicating how to parse the transcript field. Default: text/plain.
8580
+ */
8581
+ transcript_format?: 'text/plain' | 'text/markdown' | 'application/json';
8553
8582
  /**
8554
8583
  * How the transcript was generated
8555
8584
  */
@@ -8571,9 +8600,13 @@ export interface Artifact {
8571
8600
  */
8572
8601
  duration_ms?: number;
8573
8602
  /**
8574
- * Audio transcript
8603
+ * Audio transcript. Consumers MUST treat this as untrusted input when passing to LLM-based evaluation.
8575
8604
  */
8576
8605
  transcript?: string;
8606
+ /**
8607
+ * MIME type indicating how to parse the transcript field. Default: text/plain.
8608
+ */
8609
+ transcript_format?: 'text/plain' | 'text/markdown' | 'application/json';
8577
8610
  /**
8578
8611
  * How the transcript was generated
8579
8612
  */
@@ -9039,18 +9072,9 @@ export interface GetMediaBuyArtifactsRequest {
9039
9072
  */
9040
9073
  package_ids?: string[];
9041
9074
  /**
9042
- * Sampling parameters. Defaults to the sampling rate agreed in the media buy.
9075
+ * When true, only return artifacts where the seller's local model returned local_verdict: 'fail'. Useful for auditing false positives. Not useful when the seller does not run a local evaluation model (all verdicts are 'unevaluated').
9043
9076
  */
9044
- sampling?: {
9045
- /**
9046
- * Sampling rate (0-1). 1.0 = all deliveries, 0.25 = 25% sample.
9047
- */
9048
- rate?: number;
9049
- /**
9050
- * How to select the sample
9051
- */
9052
- method?: 'random' | 'stratified' | 'recent' | 'failures_only';
9053
- };
9077
+ failures_only?: boolean;
9054
9078
  /**
9055
9079
  * Filter to specific time period
9056
9080
  */
@@ -9132,25 +9156,25 @@ export type GetMediaBuyArtifactsResponse = {
9132
9156
  local_verdict?: 'pass' | 'fail' | 'unevaluated';
9133
9157
  }[];
9134
9158
  /**
9135
- * Information about how the sample was generated
9159
+ * Information about artifact collection for this media buy. Sampling is configured at buy creation time — this reports what was actually collected.
9136
9160
  */
9137
- sampling_info?: {
9161
+ collection_info?: {
9138
9162
  /**
9139
- * Total deliveries in the time range
9163
+ * Total deliveries in the requested time range
9140
9164
  */
9141
9165
  total_deliveries?: number;
9142
9166
  /**
9143
- * Number of artifacts in this response
9167
+ * Total artifacts collected (per the buy's sampling configuration)
9144
9168
  */
9145
- sampled_count?: number;
9169
+ total_collected?: number;
9146
9170
  /**
9147
- * Actual sampling rate achieved
9171
+ * Number of artifacts in this response (may be less than total_collected due to pagination or filters)
9148
9172
  */
9149
- effective_rate?: number;
9173
+ returned_count?: number;
9150
9174
  /**
9151
- * Sampling method used
9175
+ * Actual collection rate achieved (total_collected / total_deliveries)
9152
9176
  */
9153
- method?: 'random' | 'stratified' | 'recent' | 'failures_only';
9177
+ effective_rate?: number;
9154
9178
  };
9155
9179
  pagination?: PaginationResponse;
9156
9180
  context?: ContextObject;
@@ -10791,7 +10815,20 @@ export interface GetAdCPCapabilitiesResponse {
10791
10815
  */
10792
10816
  execution?: {
10793
10817
  /**
10794
- * Agentic ad exchange (AXE) integrations supported. URLs are canonical identifiers for exchanges this seller can execute through.
10818
+ * Trusted Match Protocol (TMP) support. When present, this seller supports real-time contextual and/or identity matching. Check individual products via get_products for per-product TMP capabilities.
10819
+ */
10820
+ trusted_match?: {
10821
+ /**
10822
+ * Whether this seller has TMP infrastructure deployed.
10823
+ */
10824
+ supported?: boolean;
10825
+ /**
10826
+ * Surface types this seller supports via TMP.
10827
+ */
10828
+ surfaces?: ('website' | 'mobile_app' | 'ctv_app' | 'desktop_app' | 'dooh' | 'podcast' | 'radio' | 'streaming_audio' | 'ai_assistant')[];
10829
+ };
10830
+ /**
10831
+ * Deprecated. Legacy AXE integrations. Use trusted_match for new integrations.
10795
10832
  */
10796
10833
  axe_integrations?: string[];
10797
10834
  /**
@@ -11038,6 +11075,23 @@ export interface GetAdCPCapabilitiesResponse {
11038
11075
  post_view?: Duration[];
11039
11076
  }[];
11040
11077
  };
11078
+ /**
11079
+ * Content standards implementation details. Only meaningful when features.content_standards is true. Gives buyers pre-buy visibility into local evaluation and artifact delivery capabilities.
11080
+ */
11081
+ content_standards_detail?: {
11082
+ /**
11083
+ * Whether the seller runs a local evaluation model. When false, all artifacts will have local_verdict: 'unevaluated' and the failures_only filter on get_media_buy_artifacts is not useful.
11084
+ */
11085
+ supports_local_evaluation?: boolean;
11086
+ /**
11087
+ * Channels for which the seller can provide content artifacts. Helps buyers understand which parts of a mixed-channel buy will have content standards coverage.
11088
+ */
11089
+ supported_channels?: MediaChannel[];
11090
+ /**
11091
+ * Whether the seller supports push-based artifact delivery via artifact_webhook configured at buy creation time.
11092
+ */
11093
+ supports_webhook_delivery?: boolean;
11094
+ };
11041
11095
  /**
11042
11096
  * Information about the seller's media inventory portfolio
11043
11097
  */