@adcp/client 3.12.0 → 3.14.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.
@@ -792,6 +792,10 @@ export type PropertyTag = string;
792
792
  * Standardized advertising media channels describing how buyers allocate budget. Channels are planning abstractions, not technical substrates. See the Media Channel Taxonomy specification for detailed definitions.
793
793
  */
794
794
  export type PricingOption = CPMPricingOption | VCPMPricingOption | CPCPricingOption | CPCVPricingOption | CPVPricingOption | CPPPricingOption | CPAPricingOption | FlatRatePricingOption | TimeBasedPricingOption;
795
+ /**
796
+ * Measurement system for the demographic field. Defaults to nielsen when omitted.
797
+ */
798
+ export type DemographicSystem = 'nielsen' | 'barb' | 'agf' | 'oztam' | 'mediametrie' | 'custom';
795
799
  /**
796
800
  * Standard marketing event types for event logging, aligned with IAB ECAPI
797
801
  */
@@ -862,6 +866,26 @@ export type DataProviderSignalSelector = {
862
866
  * Where the conversion event originated
863
867
  */
864
868
  export type ActionSource = 'website' | 'app' | 'offline' | 'phone_call' | 'chat' | 'email' | 'in_store' | 'system_generated' | 'other';
869
+ /**
870
+ * Days of the week for daypart targeting
871
+ */
872
+ export type DayOfWeek = 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday';
873
+ /**
874
+ * How to interpret the points array. 'spend' (default when omitted): points at ascending budget levels. 'reach_freq': points at ascending reach/frequency targets. 'weekly'/'daily': metrics are per-period values. 'clicks'/'conversions': points at ascending outcome targets.
875
+ */
876
+ export type ForecastRangeUnit = 'spend' | 'reach_freq' | 'weekly' | 'daily' | 'clicks' | 'conversions';
877
+ /**
878
+ * Method used to produce this forecast
879
+ */
880
+ export type ForecastMethod = 'estimate' | 'modeled' | 'guaranteed';
881
+ /**
882
+ * Measurement system for the demographic field. Ensures buyer and seller agree on demographic notation.
883
+ */
884
+ export type DemographicSystem1 = 'nielsen' | 'barb' | 'agf' | 'oztam' | 'mediametrie' | 'custom';
885
+ /**
886
+ * Unit of measurement for reach and audience_size metrics in this forecast. Required for cross-channel forecast comparison.
887
+ */
888
+ export type ReachUnit = 'individuals' | 'households' | 'devices' | 'accounts' | 'cookies' | 'custom';
865
889
  /**
866
890
  * Response payload for get_products task
867
891
  */
@@ -994,6 +1018,23 @@ export interface Product {
994
1018
  platform_managed?: boolean;
995
1019
  [k: string]: unknown | undefined;
996
1020
  };
1021
+ /**
1022
+ * When the buyer provides a brand_manifest with product_catalog, indicates which of the buyer's catalog items are eligible for this product. Enables buyers to make informed product_selector choices in create_media_buy. Only present for products where catalog matching is relevant (e.g. sponsored product listings on retail media). Sellers SHOULD include at least one of matched_gtins or matched_skus.
1023
+ */
1024
+ catalog_match?: {
1025
+ /**
1026
+ * GTINs from the buyer's catalog that are eligible on this product's inventory. Buyers can use these values in product_selectors.manifest_gtins when creating media buys. Standard GTIN formats (GTIN-8 through GTIN-14).
1027
+ */
1028
+ matched_gtins?: string[];
1029
+ /**
1030
+ * SKUs from the buyer's catalog that are eligible on this product's inventory. Buyers can use these values in product_selectors.manifest_skus when creating media buys.
1031
+ */
1032
+ matched_skus?: string[];
1033
+ /**
1034
+ * Total catalog items evaluated from the buyer's feed.
1035
+ */
1036
+ submitted_count: number;
1037
+ };
997
1038
  /**
998
1039
  * Explanation of why this product matches the brief (only included when brief is provided)
999
1040
  */
@@ -1362,8 +1403,9 @@ export interface CPPPricingOption {
1362
1403
  * CPP-specific parameters for demographic targeting
1363
1404
  */
1364
1405
  parameters: {
1406
+ demographic_system?: DemographicSystem;
1365
1407
  /**
1366
- * Target demographic in Nielsen format (P18-49, M25-54, W35+, etc.)
1408
+ * Target demographic code within the specified demographic_system (e.g., P18-49 for Nielsen, ABC1 Adults for BARB)
1367
1409
  */
1368
1410
  demographic: string;
1369
1411
  /**
@@ -1770,6 +1812,7 @@ export interface Proposal {
1770
1812
  * Explanation of how this proposal aligns with the campaign brief
1771
1813
  */
1772
1814
  brief_alignment?: string;
1815
+ forecast?: DeliveryForecast1;
1773
1816
  ext?: ExtensionObject;
1774
1817
  [k: string]: unknown | undefined;
1775
1818
  }
@@ -1801,6 +1844,136 @@ export interface ProductAllocation {
1801
1844
  * Categorical tags for this allocation (e.g., 'desktop', 'german', 'mobile') - useful for grouping/filtering allocations by dimension
1802
1845
  */
1803
1846
  tags?: string[];
1847
+ /**
1848
+ * Recommended time windows for this allocation in spot-plan proposals.
1849
+ *
1850
+ * @minItems 1
1851
+ */
1852
+ daypart_targets?: [DaypartTarget, ...DaypartTarget[]];
1853
+ forecast?: DeliveryForecast;
1854
+ ext?: ExtensionObject;
1855
+ [k: string]: unknown | undefined;
1856
+ }
1857
+ /**
1858
+ * A time window for daypart targeting. Specifies days of week and an hour range. start_hour is inclusive, end_hour is exclusive (e.g., 6-10 = 6:00am to 10:00am). Follows the Google Ads AdScheduleInfo / DV360 DayPartTargeting pattern.
1859
+ */
1860
+ export interface DaypartTarget {
1861
+ /**
1862
+ * Days of week this window applies to. Use multiple days for compact targeting (e.g., monday-friday in one object).
1863
+ *
1864
+ * @minItems 1
1865
+ */
1866
+ days: [DayOfWeek, ...DayOfWeek[]];
1867
+ /**
1868
+ * Start hour (inclusive), 0-23 in 24-hour format. 0 = midnight, 6 = 6:00am, 18 = 6:00pm.
1869
+ */
1870
+ start_hour: number;
1871
+ /**
1872
+ * End hour (exclusive), 1-24 in 24-hour format. 10 = 10:00am, 24 = midnight. Must be greater than start_hour.
1873
+ */
1874
+ end_hour: number;
1875
+ /**
1876
+ * Optional human-readable name for this time window (e.g., 'Morning Drive', 'Prime Time')
1877
+ */
1878
+ label?: string;
1879
+ }
1880
+ /**
1881
+ * Forecasted delivery metrics for this allocation
1882
+ */
1883
+ export interface DeliveryForecast {
1884
+ /**
1885
+ * Forecasted delivery at one or more budget levels. A single point is a standard forecast; multiple points ordered by ascending budget form a curve showing how metrics scale with spend. Each point pairs a budget with metric ranges.
1886
+ *
1887
+ * @minItems 1
1888
+ */
1889
+ points: [ForecastPoint, ...ForecastPoint[]];
1890
+ forecast_range_unit?: ForecastRangeUnit;
1891
+ method: ForecastMethod;
1892
+ /**
1893
+ * ISO 4217 currency code for monetary values in this forecast (spend, budget)
1894
+ */
1895
+ currency: string;
1896
+ demographic_system?: DemographicSystem1;
1897
+ /**
1898
+ * 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.
1899
+ */
1900
+ demographic?: string;
1901
+ reach_unit?: ReachUnit;
1902
+ /**
1903
+ * When this forecast was computed
1904
+ */
1905
+ generated_at?: string;
1906
+ /**
1907
+ * When this forecast expires. After this time, the forecast should be refreshed. Forecast expiry does not affect proposal executability.
1908
+ */
1909
+ valid_until?: string;
1910
+ ext?: ExtensionObject;
1911
+ [k: string]: unknown | undefined;
1912
+ }
1913
+ /**
1914
+ * A forecast at a specific budget level. A single point represents a standard forecast; multiple points ordered by ascending budget form a curve showing how delivery metrics scale with spend.
1915
+ */
1916
+ export interface ForecastPoint {
1917
+ /**
1918
+ * Budget amount for this forecast point. 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.
1919
+ */
1920
+ budget: number;
1921
+ /**
1922
+ * Forecasted metric values at this budget level. Keys are either forecastable-metric values for delivery/engagement (impressions, reach, spend, etc.) or event-type values for outcomes (purchase, lead, app_install, etc.). Values are ForecastRange objects (low/mid/high). Use { "mid": value } for point estimates. Include spend when the platform predicts it will differ from budget.
1923
+ */
1924
+ metrics: {
1925
+ [k: string]: ForecastRange | undefined;
1926
+ };
1927
+ [k: string]: unknown | undefined;
1928
+ }
1929
+ /**
1930
+ * 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.
1931
+ */
1932
+ export interface ForecastRange {
1933
+ /**
1934
+ * Conservative (low-end) forecast value
1935
+ */
1936
+ low?: number;
1937
+ /**
1938
+ * Expected (most likely) forecast value
1939
+ */
1940
+ mid: number;
1941
+ /**
1942
+ * Optimistic (high-end) forecast value
1943
+ */
1944
+ high?: number;
1945
+ [k: string]: unknown | undefined;
1946
+ }
1947
+ /**
1948
+ * Aggregate forecasted delivery metrics for the entire proposal. When both proposal-level and allocation-level forecasts are present, the proposal-level forecast is authoritative for total delivery estimation.
1949
+ */
1950
+ export interface DeliveryForecast1 {
1951
+ /**
1952
+ * Forecasted delivery at one or more budget levels. A single point is a standard forecast; multiple points ordered by ascending budget form a curve showing how metrics scale with spend. Each point pairs a budget with metric ranges.
1953
+ *
1954
+ * @minItems 1
1955
+ */
1956
+ points: [ForecastPoint, ...ForecastPoint[]];
1957
+ forecast_range_unit?: ForecastRangeUnit;
1958
+ method: ForecastMethod;
1959
+ /**
1960
+ * ISO 4217 currency code for monetary values in this forecast (spend, budget)
1961
+ */
1962
+ currency: string;
1963
+ demographic_system?: DemographicSystem1;
1964
+ /**
1965
+ * 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.
1966
+ */
1967
+ demographic?: string;
1968
+ reach_unit?: ReachUnit;
1969
+ /**
1970
+ * When this forecast was computed
1971
+ */
1972
+ generated_at?: string;
1973
+ /**
1974
+ * When this forecast expires. After this time, the forecast should be refreshed. Forecast expiry does not affect proposal executability.
1975
+ */
1976
+ valid_until?: string;
1804
1977
  ext?: ExtensionObject;
1805
1978
  [k: string]: unknown | undefined;
1806
1979
  }
@@ -2161,7 +2334,7 @@ export type PostalCodeSystem = 'us_zip' | 'us_zip_plus_four' | 'gb_outward' | 'g
2161
2334
  */
2162
2335
  export type PostalCodeSystem1 = 'us_zip' | 'us_zip_plus_four' | 'gb_outward' | 'gb_full' | 'ca_fsa' | 'ca_full' | 'de_plz' | 'fr_code_postal' | 'au_postcode';
2163
2336
  /**
2164
- * Methods for verifying user age for compliance. Does not include 'inferred' as it is not accepted for regulatory compliance.
2337
+ * Days of the week for daypart targeting
2165
2338
  */
2166
2339
  export type AgeVerificationMethod = 'facial_age_estimation' | 'id_document' | 'digital_id' | 'credit_card' | 'world_id';
2167
2340
  /**
@@ -2349,9 +2522,9 @@ export interface CreateMediaBuyRequest {
2349
2522
  */
2350
2523
  buyer_ref: string;
2351
2524
  /**
2352
- * Account to bill for this media buy. The seller maps the agent's brand + operator to an account during sync_accounts; the agent passes that account_id here.
2525
+ * Account to bill for this media buy. Required when the agent has access to multiple accounts; when omitted, the seller uses the agent's sole account. The seller maps the agent's brand + operator to an account during sync_accounts; the agent passes that account_id here.
2353
2526
  */
2354
- account_id: string;
2527
+ account_id?: string;
2355
2528
  /**
2356
2529
  * ID of a proposal from get_products to execute. When provided with total_budget, the publisher converts the proposal's allocation percentages into packages automatically. Alternative to providing packages array.
2357
2530
  */
@@ -2645,6 +2818,12 @@ export interface TargetingOverlay {
2645
2818
  values: [string, ...string[]];
2646
2819
  }[]
2647
2820
  ];
2821
+ /**
2822
+ * Restrict delivery to specific time windows. Each entry specifies days of week and an hour range.
2823
+ *
2824
+ * @minItems 1
2825
+ */
2826
+ daypart_targets?: [DaypartTarget, ...DaypartTarget[]];
2648
2827
  /**
2649
2828
  * AXE segment ID to include for targeting
2650
2829
  */
@@ -2689,7 +2868,7 @@ export interface TargetingOverlay {
2689
2868
  [k: string]: unknown | undefined;
2690
2869
  }
2691
2870
  /**
2692
- * Frequency capping settings for package-level application
2871
+ * A time window for daypart targeting. Specifies days of week and an hour range. start_hour is inclusive, end_hour is exclusive (e.g., 6-10 = 6:00am to 10:00am). Follows the Google Ads AdScheduleInfo / DV360 DayPartTargeting pattern.
2693
2872
  */
2694
2873
  export interface FrequencyCap {
2695
2874
  /**
@@ -3255,7 +3434,7 @@ export interface Account {
3255
3434
  */
3256
3435
  account_id: string;
3257
3436
  /**
3258
- * Human-readable account name (e.g., 'Coke', 'Coke c/o Publicis')
3437
+ * Human-readable account name (e.g., 'Acme', 'Acme c/o Pinnacle')
3259
3438
  */
3260
3439
  name: string;
3261
3440
  /**
@@ -8677,7 +8856,7 @@ export interface SyncAccountsRequest {
8677
8856
  */
8678
8857
  accounts: {
8679
8858
  /**
8680
- * House domain where brand.json is hosted (e.g., 'unilever.com', 'coca-cola.com'). This is the canonical identity anchor for the brand, resolved via /.well-known/brand.json. For single-brand houses, this alone identifies the brand.
8859
+ * House domain where brand.json is hosted (e.g., 'unilever.com', 'acme-corp.com'). This is the canonical identity anchor for the brand, resolved via /.well-known/brand.json. For single-brand houses, this alone identifies the brand.
8681
8860
  */
8682
8861
  house: string;
8683
8862
  /**