@adcp/client 4.5.2 → 4.6.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 (36) hide show
  1. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  2. package/dist/lib/core/SingleAgentClient.d.ts +41 -1
  3. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  4. package/dist/lib/core/SingleAgentClient.js +54 -0
  5. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  6. package/dist/lib/core/TaskExecutor.d.ts +10 -0
  7. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  8. package/dist/lib/core/TaskExecutor.js +23 -11
  9. package/dist/lib/core/TaskExecutor.js.map +1 -1
  10. package/dist/lib/errors/index.d.ts +10 -0
  11. package/dist/lib/errors/index.d.ts.map +1 -1
  12. package/dist/lib/errors/index.js +20 -1
  13. package/dist/lib/errors/index.js.map +1 -1
  14. package/dist/lib/index.d.ts +3 -3
  15. package/dist/lib/index.d.ts.map +1 -1
  16. package/dist/lib/index.js +8 -4
  17. package/dist/lib/index.js.map +1 -1
  18. package/dist/lib/testing/orchestrator.d.ts.map +1 -1
  19. package/dist/lib/testing/orchestrator.js +13 -0
  20. package/dist/lib/testing/orchestrator.js.map +1 -1
  21. package/dist/lib/types/core.generated.d.ts +83 -38
  22. package/dist/lib/types/core.generated.d.ts.map +1 -1
  23. package/dist/lib/types/core.generated.js +1 -1
  24. package/dist/lib/types/schemas.generated.d.ts +2754 -187
  25. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  26. package/dist/lib/types/schemas.generated.js +106 -82
  27. package/dist/lib/types/schemas.generated.js.map +1 -1
  28. package/dist/lib/types/tools.generated.d.ts +222 -147
  29. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  30. package/dist/lib/utils/capabilities.d.ts +28 -0
  31. package/dist/lib/utils/capabilities.d.ts.map +1 -1
  32. package/dist/lib/utils/capabilities.js +132 -1
  33. package/dist/lib/utils/capabilities.js.map +1 -1
  34. package/dist/lib/version.d.ts +3 -3
  35. package/dist/lib/version.js +3 -3
  36. package/package.json +1 -1
@@ -467,10 +467,6 @@ export interface MediaBuyFeatures {
467
467
  * Supports sync_catalogs task for catalog feed management with platform review and approval
468
468
  */
469
469
  catalog_management?: boolean;
470
- /**
471
- * Supports sandbox mode for operations without real platform calls or spend
472
- */
473
- sandbox?: boolean;
474
470
  [k: string]: boolean | undefined;
475
471
  }
476
472
  /**
@@ -1193,7 +1189,7 @@ export interface CPAPricingOption {
1193
1189
  min_spend_per_package?: number;
1194
1190
  }
1195
1191
  /**
1196
- * Flat rate pricing for DOOH, sponsorships, and time-based campaigns. If fixed_price is present, it's fixed pricing. If absent, it's auction-based.
1192
+ * Flat rate pricing for sponsorships, takeovers, and DOOH exclusive placements. A fixed total cost regardless of delivery volume. For duration-scaled pricing (rate × time units), use the `time` model instead. If fixed_price is present, it's fixed pricing. If absent, it's auction-based.
1197
1193
  */
1198
1194
  export interface FlatRatePricingOption {
1199
1195
  /**
@@ -1217,44 +1213,49 @@ export interface FlatRatePricingOption {
1217
1213
  */
1218
1214
  floor_price?: number;
1219
1215
  price_guidance?: PriceGuidance;
1220
- /**
1221
- * Flat rate parameters for DOOH and time-based campaigns
1222
- */
1223
- parameters?: {
1224
- /**
1225
- * Duration in hours for time-based pricing
1226
- */
1227
- duration_hours?: number;
1228
- /**
1229
- * Guaranteed share of voice (0-100)
1230
- */
1231
- sov_percentage?: number;
1232
- /**
1233
- * Duration of ad loop rotation in seconds
1234
- */
1235
- loop_duration_seconds?: number;
1236
- /**
1237
- * Minimum plays per hour
1238
- */
1239
- min_plays_per_hour?: number;
1240
- /**
1241
- * Named venue package identifier
1242
- */
1243
- venue_package?: string;
1244
- /**
1245
- * Estimated impressions (informational)
1246
- */
1247
- estimated_impressions?: number;
1248
- /**
1249
- * Specific daypart for time-based pricing
1250
- */
1251
- daypart?: string;
1252
- };
1216
+ parameters?: DoohParameters;
1253
1217
  /**
1254
1218
  * Minimum spend requirement per package using this pricing option, in the specified currency
1255
1219
  */
1256
1220
  min_spend_per_package?: number;
1257
1221
  }
1222
+ /**
1223
+ * DOOH inventory allocation parameters. Sponsorship and takeover flat_rate options omit this field entirely — only include for digital out-of-home inventory.
1224
+ */
1225
+ export interface DoohParameters {
1226
+ /**
1227
+ * Discriminator identifying this as DOOH parameters
1228
+ */
1229
+ type: 'dooh';
1230
+ /**
1231
+ * Guaranteed share of voice as a percentage (0-100)
1232
+ */
1233
+ sov_percentage?: number;
1234
+ /**
1235
+ * Duration of the ad loop rotation in seconds
1236
+ */
1237
+ loop_duration_seconds?: number;
1238
+ /**
1239
+ * Minimum number of plays per hour guaranteed
1240
+ */
1241
+ min_plays_per_hour?: number;
1242
+ /**
1243
+ * Named collection of screens included in this buy
1244
+ */
1245
+ venue_package?: string;
1246
+ /**
1247
+ * Duration of the DOOH slot in hours (e.g., 24 for a full-day takeover)
1248
+ */
1249
+ duration_hours?: number;
1250
+ /**
1251
+ * Named daypart for this slot (e.g., morning_commute, evening_rush)
1252
+ */
1253
+ daypart?: string;
1254
+ /**
1255
+ * Estimated audience impressions for this slot (informational, not a delivery guarantee)
1256
+ */
1257
+ estimated_impressions?: number;
1258
+ }
1258
1259
  /**
1259
1260
  * Cost per time unit (hour, day, week, or month) - rate scales with campaign duration. If fixed_price is present, it's fixed pricing. If absent, it's auction-based.
1260
1261
  */
@@ -1572,6 +1573,14 @@ export interface ProductAllocation {
1572
1573
  * Categorical tags for this allocation (e.g., 'desktop', 'german', 'mobile') - useful for grouping/filtering allocations by dimension
1573
1574
  */
1574
1575
  tags?: string[];
1576
+ /**
1577
+ * Recommended flight start date/time for this allocation in ISO 8601 format. Allows publishers to propose per-flight scheduling within a proposal. When omitted, the allocation applies to the full campaign date range.
1578
+ */
1579
+ start_time?: string;
1580
+ /**
1581
+ * Recommended flight end date/time for this allocation in ISO 8601 format. Allows publishers to propose per-flight scheduling within a proposal. When omitted, the allocation applies to the full campaign date range.
1582
+ */
1583
+ end_time?: string;
1575
1584
  /**
1576
1585
  * Recommended time windows for this allocation in spot-plan proposals.
1577
1586
  */
@@ -1662,6 +1671,10 @@ export type WCAGLevel = 'A' | 'AA' | 'AAA';
1662
1671
  * Where a required disclosure should appear within a creative. Used by creative briefs to specify disclosure placement and by formats to declare which positions they can render.
1663
1672
  */
1664
1673
  export type DisclosurePosition = 'prominent' | 'footer' | 'audio' | 'subtitle' | 'overlay' | 'end_card' | 'pre_roll' | 'companion';
1674
+ /**
1675
+ * How long a disclosure must persist during content playback or display. Different jurisdictions and regulations require different persistence behaviors for AI-generated content labels. When multiple sources specify persistence for the same jurisdiction (e.g., brief and provenance), the most restrictive mode applies: continuous > initial > flexible.
1676
+ */
1677
+ export type DisclosurePersistence = 'continuous' | 'initial' | 'flexible';
1665
1678
  /**
1666
1679
  * Request parameters for discovering supported creative formats
1667
1680
  */
@@ -1701,9 +1714,13 @@ export interface ListCreativeFormatsRequest {
1701
1714
  name_search?: string;
1702
1715
  wcag_level?: WCAGLevel;
1703
1716
  /**
1704
- * Filter to formats whose supported_disclosure_positions include all of these positions. Use to find formats compatible with a brief's compliance requirements.
1717
+ * Filter to formats that support all of these disclosure positions. When a format has disclosure_capabilities, match against those positions. Otherwise fall back to supported_disclosure_positions. Use to find formats compatible with a brief's compliance requirements.
1705
1718
  */
1706
1719
  disclosure_positions?: DisclosurePosition[];
1720
+ /**
1721
+ * Filter to formats where each requested persistence mode is supported by at least one position in disclosure_capabilities. Different positions may satisfy different modes. Use to find formats compatible with jurisdiction-specific persistence requirements (e.g., continuous for EU AI Act).
1722
+ */
1723
+ disclosure_persistence?: DisclosurePersistence[];
1707
1724
  /**
1708
1725
  * Filter to formats whose output_format_ids includes any of these format IDs. Returns formats that can produce these outputs — inspect each result's input_format_ids to see what inputs they accept.
1709
1726
  */
@@ -1868,6 +1885,16 @@ export interface Format {
1868
1885
  * Disclosure positions this format can render. Buyers use this to determine whether a format can satisfy their compliance requirements before submitting a creative. When omitted, the format makes no disclosure rendering guarantees — creative agents SHOULD treat this as incompatible with briefs that require specific disclosure positions. Values correspond to positions on creative-brief.json required_disclosures.
1869
1886
  */
1870
1887
  supported_disclosure_positions?: DisclosurePosition[];
1888
+ /**
1889
+ * Structured disclosure capabilities per position with persistence modes. Declares which persistence behaviors each disclosure position supports, enabling persistence-aware matching against provenance render guidance and brief requirements. When present, supersedes supported_disclosure_positions for persistence-aware queries. The flat supported_disclosure_positions field is retained for backward compatibility. Each position MUST appear at most once; validators and agents SHOULD reject duplicates.
1890
+ */
1891
+ disclosure_capabilities?: {
1892
+ position: DisclosurePosition;
1893
+ /**
1894
+ * Persistence modes this position supports
1895
+ */
1896
+ persistence: DisclosurePersistence[];
1897
+ }[];
1871
1898
  /**
1872
1899
  * Optional detailed card with carousel and full specifications. Provides rich format documentation similar to ad spec pages.
1873
1900
  */
@@ -2438,6 +2465,14 @@ export interface PackageRequest {
2438
2465
  * Impression goal for this package
2439
2466
  */
2440
2467
  impressions?: number;
2468
+ /**
2469
+ * Flight start date/time for this package in ISO 8601 format. When omitted, the package inherits the media buy's start_time. Must fall within the media buy's date range.
2470
+ */
2471
+ start_time?: string;
2472
+ /**
2473
+ * Flight end date/time for this package in ISO 8601 format. When omitted, the package inherits the media buy's end_time. Must fall within the media buy's date range.
2474
+ */
2475
+ end_time?: string;
2441
2476
  /**
2442
2477
  * Whether this package should be created in a paused state. Paused packages do not deliver impressions. Defaults to false.
2443
2478
  */
@@ -2771,6 +2806,10 @@ export interface Provenance {
2771
2806
  */
2772
2807
  role: 'creator' | 'advertiser' | 'agency' | 'platform' | 'tool';
2773
2808
  };
2809
+ /**
2810
+ * When this provenance claim was made (ISO 8601). Distinct from created_time, which records when the content itself was produced. A provenance claim may be attached well after content creation, for example when retroactively declaring AI involvement for regulatory compliance.
2811
+ */
2812
+ declared_at?: string;
2774
2813
  /**
2775
2814
  * When this content was created or generated (ISO 8601)
2776
2815
  */
@@ -2812,6 +2851,21 @@ export interface Provenance {
2812
2851
  * Required disclosure label text for this jurisdiction, in the local language
2813
2852
  */
2814
2853
  label_text?: string;
2854
+ /**
2855
+ * How the disclosure should be rendered for this jurisdiction. Expresses the declaring party's intent for persistence and position based on regulatory requirements. Publishers control actual rendering but governance agents can audit whether guidance was followed.
2856
+ */
2857
+ render_guidance?: {
2858
+ persistence?: DisclosurePersistence;
2859
+ /**
2860
+ * Minimum display duration in milliseconds for initial persistence. Recommended when persistence is initial — without it, the duration is at the publisher's discretion. At serve time the publisher reads this from provenance since the brief is not available.
2861
+ */
2862
+ min_duration_ms?: number;
2863
+ /**
2864
+ * Preferred disclosure positions in priority order. The first position a format supports should be used.
2865
+ */
2866
+ positions?: DisclosurePosition[];
2867
+ ext?: ExtensionObject;
2868
+ };
2815
2869
  }[];
2816
2870
  };
2817
2871
  /**
@@ -3261,6 +3315,7 @@ export interface CreativeBrief {
3261
3315
  * Language of the disclosure text as a BCP 47 language tag (e.g., 'en', 'fr-CA', 'es'). When omitted, the disclosure is assumed to match the creative's language.
3262
3316
  */
3263
3317
  language?: string;
3318
+ persistence?: DisclosurePersistence;
3264
3319
  }[];
3265
3320
  /**
3266
3321
  * Claims that must not appear in creatives for this campaign. Creative agents should ensure generated content avoids these claims.
@@ -3514,6 +3569,14 @@ export interface Package {
3514
3569
  * Optimization targets for this package. The seller optimizes delivery toward these goals in priority order. Common pattern: event goals (purchase, install) as primary targets at priority 1; metric goals (clicks, views) as secondary proxy signals at priority 2+.
3515
3570
  */
3516
3571
  optimization_goals?: OptimizationGoal[];
3572
+ /**
3573
+ * Flight start date/time for this package in ISO 8601 format. When omitted, the package inherits the media buy's start_time. Sellers SHOULD always include the resolved value in responses, even when inherited.
3574
+ */
3575
+ start_time?: string;
3576
+ /**
3577
+ * Flight end date/time for this package in ISO 8601 format. When omitted, the package inherits the media buy's end_time. Sellers SHOULD always include the resolved value in responses, even when inherited.
3578
+ */
3579
+ end_time?: string;
3517
3580
  /**
3518
3581
  * Whether this package is paused by the buyer. Paused packages do not deliver impressions. Defaults to false.
3519
3582
  */
@@ -4055,6 +4118,14 @@ export type PackageUpdate = {
4055
4118
  * Updated impression goal for this package
4056
4119
  */
4057
4120
  impressions?: number;
4121
+ /**
4122
+ * Updated flight start date/time for this package in ISO 8601 format. Must fall within the media buy's date range.
4123
+ */
4124
+ start_time?: string;
4125
+ /**
4126
+ * Updated flight end date/time for this package in ISO 8601 format. Must fall within the media buy's date range.
4127
+ */
4128
+ end_time?: string;
4058
4129
  /**
4059
4130
  * Pause/resume specific package (true = paused, false = active)
4060
4131
  */
@@ -4266,109 +4337,7 @@ export interface GetMediaBuysResponse {
4266
4337
  /**
4267
4338
  * Packages within this media buy, augmented with creative approval status and optional delivery snapshots
4268
4339
  */
4269
- packages: {
4270
- /**
4271
- * Publisher's package identifier
4272
- */
4273
- package_id: string;
4274
- /**
4275
- * Buyer's reference identifier for this package
4276
- */
4277
- buyer_ref?: string;
4278
- /**
4279
- * Product identifier this package is purchased from
4280
- */
4281
- product_id?: string;
4282
- /**
4283
- * Package budget amount, denominated in package.currency when present, otherwise media_buy.currency
4284
- */
4285
- budget?: number;
4286
- /**
4287
- * ISO 4217 currency code for monetary values at this package level (budget, bid_price, snapshot.spend). When absent, inherit media_buy.currency.
4288
- */
4289
- currency?: string;
4290
- /**
4291
- * Current bid price for auction-based packages. Denominated in package.currency when present, otherwise media_buy.currency. Relevant for automated price optimization loops.
4292
- */
4293
- bid_price?: number;
4294
- /**
4295
- * Goal impression count for impression-based packages
4296
- */
4297
- impressions?: number;
4298
- /**
4299
- * ISO 8601 flight start time for this package. Use to determine whether the package is within its scheduled flight before interpreting delivery status.
4300
- */
4301
- start_time?: string;
4302
- /**
4303
- * ISO 8601 flight end time for this package
4304
- */
4305
- end_time?: string;
4306
- /**
4307
- * Whether this package is currently paused by the buyer
4308
- */
4309
- paused?: boolean;
4310
- /**
4311
- * Approval status for each creative assigned to this package. Absent when no creatives have been assigned.
4312
- */
4313
- creative_approvals?: {
4314
- /**
4315
- * Creative identifier
4316
- */
4317
- creative_id: string;
4318
- approval_status?: CreativeApprovalStatus;
4319
- /**
4320
- * Human-readable explanation of why the creative was rejected. Present only when approval_status is 'rejected'.
4321
- */
4322
- rejection_reason?: string;
4323
- }[];
4324
- /**
4325
- * Format IDs from the original create_media_buy format_ids_to_provide that have not yet been uploaded via sync_creatives. When empty or absent, all required formats have been provided.
4326
- */
4327
- format_ids_pending?: FormatID[];
4328
- /**
4329
- * Machine-readable reason the snapshot is omitted. Present only when include_snapshot was true and snapshot is unavailable for this package.
4330
- */
4331
- snapshot_unavailable_reason?: 'SNAPSHOT_UNSUPPORTED' | 'SNAPSHOT_TEMPORARILY_UNAVAILABLE' | 'SNAPSHOT_PERMISSION_DENIED';
4332
- /**
4333
- * Near-real-time delivery snapshot for this package. Only present when include_snapshot was true in the request. Represents the latest available entity-level stats from the platform — not billing-grade data.
4334
- */
4335
- snapshot?: {
4336
- /**
4337
- * ISO 8601 timestamp when this snapshot was captured by the platform
4338
- */
4339
- as_of: string;
4340
- /**
4341
- * Maximum age of this data in seconds. For example, 900 means the data may be up to 15 minutes old. Use this to interpret zero delivery: a value of 900 means zero impressions is likely real; a value of 14400 means reporting may still be catching up.
4342
- */
4343
- staleness_seconds: number;
4344
- /**
4345
- * Total impressions delivered since package start
4346
- */
4347
- impressions: number;
4348
- /**
4349
- * Total spend since package start, denominated in snapshot.currency when present, otherwise package.currency or media_buy.currency
4350
- */
4351
- spend: number;
4352
- /**
4353
- * ISO 4217 currency code for spend in this snapshot. Optional when unchanged from package.currency or media_buy.currency.
4354
- */
4355
- currency?: string;
4356
- /**
4357
- * Total clicks since package start (when available)
4358
- */
4359
- clicks?: number;
4360
- /**
4361
- * Current delivery pace relative to expected (1.0 = on track, <1.0 = behind, >1.0 = ahead). Absent when pacing cannot be determined.
4362
- */
4363
- pacing_index?: number;
4364
- /**
4365
- * Operational delivery state of this package. 'not_delivering' means the package is within its scheduled flight but has delivered zero impressions for at least one full staleness cycle — the signal for automated price adjustments or buyer alerts. Implementers must not return 'not_delivering' until at least staleness_seconds have elapsed since package activation.
4366
- */
4367
- delivery_status?: 'delivering' | 'not_delivering' | 'completed' | 'budget_exhausted' | 'flight_ended' | 'goal_met';
4368
- ext?: ExtensionObject;
4369
- };
4370
- ext?: ExtensionObject;
4371
- }[];
4340
+ packages: PackageStatus[];
4372
4341
  ext?: ExtensionObject;
4373
4342
  }[];
4374
4343
  /**
@@ -4383,6 +4352,112 @@ export interface GetMediaBuysResponse {
4383
4352
  context?: ContextObject;
4384
4353
  ext?: ExtensionObject;
4385
4354
  }
4355
+ /**
4356
+ * Current status of a package within a media buy — includes creative approval state and optional delivery snapshot. For the creation input shape, see PackageRequest. For the creation output shape, see Package.
4357
+ */
4358
+ export interface PackageStatus {
4359
+ /**
4360
+ * Publisher's package identifier
4361
+ */
4362
+ package_id: string;
4363
+ /**
4364
+ * Buyer's reference identifier for this package
4365
+ */
4366
+ buyer_ref?: string;
4367
+ /**
4368
+ * Product identifier this package is purchased from
4369
+ */
4370
+ product_id?: string;
4371
+ /**
4372
+ * Package budget amount, denominated in package.currency when present, otherwise media_buy.currency
4373
+ */
4374
+ budget?: number;
4375
+ /**
4376
+ * ISO 4217 currency code for monetary values at this package level (budget, bid_price, snapshot.spend). When absent, inherit media_buy.currency.
4377
+ */
4378
+ currency?: string;
4379
+ /**
4380
+ * Current bid price for auction-based packages. Denominated in package.currency when present, otherwise media_buy.currency. Relevant for automated price optimization loops.
4381
+ */
4382
+ bid_price?: number;
4383
+ /**
4384
+ * Goal impression count for impression-based packages
4385
+ */
4386
+ impressions?: number;
4387
+ /**
4388
+ * ISO 8601 flight start time for this package. Use to determine whether the package is within its scheduled flight before interpreting delivery status.
4389
+ */
4390
+ start_time?: string;
4391
+ /**
4392
+ * ISO 8601 flight end time for this package
4393
+ */
4394
+ end_time?: string;
4395
+ /**
4396
+ * Whether this package is currently paused by the buyer
4397
+ */
4398
+ paused?: boolean;
4399
+ /**
4400
+ * Approval status for each creative assigned to this package. Absent when no creatives have been assigned.
4401
+ */
4402
+ creative_approvals?: {
4403
+ /**
4404
+ * Creative identifier
4405
+ */
4406
+ creative_id: string;
4407
+ approval_status?: CreativeApprovalStatus;
4408
+ /**
4409
+ * Human-readable explanation of why the creative was rejected. Present only when approval_status is 'rejected'.
4410
+ */
4411
+ rejection_reason?: string;
4412
+ }[];
4413
+ /**
4414
+ * Format IDs from the original create_media_buy format_ids_to_provide that have not yet been uploaded via sync_creatives. When empty or absent, all required formats have been provided.
4415
+ */
4416
+ format_ids_pending?: FormatID[];
4417
+ /**
4418
+ * Machine-readable reason the snapshot is omitted. Present only when include_snapshot was true and snapshot is unavailable for this package.
4419
+ */
4420
+ snapshot_unavailable_reason?: 'SNAPSHOT_UNSUPPORTED' | 'SNAPSHOT_TEMPORARILY_UNAVAILABLE' | 'SNAPSHOT_PERMISSION_DENIED';
4421
+ /**
4422
+ * Near-real-time delivery snapshot for this package. Only present when include_snapshot was true in the request. Represents the latest available entity-level stats from the platform — not billing-grade data.
4423
+ */
4424
+ snapshot?: {
4425
+ /**
4426
+ * ISO 8601 timestamp when this snapshot was captured by the platform
4427
+ */
4428
+ as_of: string;
4429
+ /**
4430
+ * Maximum age of this data in seconds. For example, 900 means the data may be up to 15 minutes old. Use this to interpret zero delivery: a value of 900 means zero impressions is likely real; a value of 14400 means reporting may still be catching up.
4431
+ */
4432
+ staleness_seconds: number;
4433
+ /**
4434
+ * Total impressions delivered since package start
4435
+ */
4436
+ impressions: number;
4437
+ /**
4438
+ * Total spend since package start, denominated in snapshot.currency when present, otherwise package.currency or media_buy.currency
4439
+ */
4440
+ spend: number;
4441
+ /**
4442
+ * ISO 4217 currency code for spend in this snapshot. Optional when unchanged from package.currency or media_buy.currency.
4443
+ */
4444
+ currency?: string;
4445
+ /**
4446
+ * Total clicks since package start (when available)
4447
+ */
4448
+ clicks?: number;
4449
+ /**
4450
+ * Current delivery pace relative to expected (1.0 = on track, <1.0 = behind, >1.0 = ahead). Absent when pacing cannot be determined.
4451
+ */
4452
+ pacing_index?: number;
4453
+ /**
4454
+ * Operational delivery state of this package. 'not_delivering' means the package is within its scheduled flight but has delivered zero impressions for at least one full staleness cycle — the signal for automated price adjustments or buyer alerts. Implementers must not return 'not_delivering' until at least staleness_seconds have elapsed since package activation.
4455
+ */
4456
+ delivery_status?: 'delivering' | 'not_delivering' | 'completed' | 'budget_exhausted' | 'flight_ended' | 'goal_met';
4457
+ ext?: ExtensionObject;
4458
+ };
4459
+ ext?: ExtensionObject;
4460
+ }
4386
4461
  /**
4387
4462
  * Attribution model to use. When omitted, the seller applies their default model.
4388
4463
  */
@@ -8599,11 +8674,7 @@ export interface GetAdCPCapabilitiesResponse {
8599
8674
  */
8600
8675
  account?: {
8601
8676
  /**
8602
- * How the seller resolves account references. explicit_account_id: accounts are managed out-of-band (advertiser portal, sales rep) and discovered via list_accounts. implicit_from_sync: buyer declares intent via sync_accounts and the seller provisions accounts.
8603
- */
8604
- account_resolution?: 'explicit_account_id' | 'implicit_from_sync';
8605
- /**
8606
- * Whether the seller requires operator-level credentials. When false (default), the seller trusts the agent's identity claims — the agent authenticates once and declares brands/operators via sync_accounts. When true, each operator must authenticate independently with the seller, and the agent opens a per-operator session using the operator's credential.
8677
+ * Whether the seller requires operator-level credentials. When true (explicit accounts), operators authenticate independently with the seller and the buyer discovers accounts via list_accounts. When false (default, implicit accounts), the seller trusts the agent's identity claims — the agent authenticates once and declares brands/operators via sync_accounts.
8607
8678
  */
8608
8679
  require_operator_auth?: boolean;
8609
8680
  /**
@@ -8622,6 +8693,10 @@ export interface GetAdCPCapabilitiesResponse {
8622
8693
  * Whether this seller supports the get_account_financials task for querying account-level financial status (spend, credit, invoices). Only applicable to operator-billed accounts.
8623
8694
  */
8624
8695
  account_financials?: boolean;
8696
+ /**
8697
+ * Whether this seller supports sandbox accounts for testing. Buyers can provision a sandbox account via sync_accounts with sandbox: true, and all requests using that account_id will be treated as sandbox — no real platform calls or spend.
8698
+ */
8699
+ sandbox?: boolean;
8625
8700
  };
8626
8701
  /**
8627
8702
  * Media-buy protocol capabilities. Only present if media_buy is in supported_protocols.