@adcp/sdk 14.0.0-beta.5 → 14.0.0-beta.6

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 (80) hide show
  1. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  2. package/dist/lib/core/AgentClient.js +26 -10
  3. package/dist/lib/core/AgentClient.js.map +1 -1
  4. package/dist/lib/core/AgentClient.mjs +26 -10
  5. package/dist/lib/core/AgentClient.mjs.map +1 -1
  6. package/dist/lib/core/AsyncHandler.d.mts +4 -2
  7. package/dist/lib/core/AsyncHandler.d.ts +4 -2
  8. package/dist/lib/core/AsyncHandler.d.ts.map +1 -1
  9. package/dist/lib/core/AsyncHandler.js +15 -1
  10. package/dist/lib/core/AsyncHandler.js.map +1 -1
  11. package/dist/lib/core/AsyncHandler.mjs +15 -1
  12. package/dist/lib/core/AsyncHandler.mjs.map +1 -1
  13. package/dist/lib/core/SingleAgentClient.d.mts +3 -1
  14. package/dist/lib/core/SingleAgentClient.d.ts +3 -1
  15. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  16. package/dist/lib/core/SingleAgentClient.js +158 -39
  17. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  18. package/dist/lib/core/SingleAgentClient.mjs +167 -40
  19. package/dist/lib/core/SingleAgentClient.mjs.map +1 -1
  20. package/dist/lib/core/TaskExecutor.d.mts +57 -2
  21. package/dist/lib/core/TaskExecutor.d.ts +57 -2
  22. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  23. package/dist/lib/core/TaskExecutor.js +382 -44
  24. package/dist/lib/core/TaskExecutor.js.map +1 -1
  25. package/dist/lib/core/TaskExecutor.mjs +382 -45
  26. package/dist/lib/core/TaskExecutor.mjs.map +1 -1
  27. package/dist/lib/core/request-proposals-guard.d.mts +11 -0
  28. package/dist/lib/core/request-proposals-guard.d.ts +12 -0
  29. package/dist/lib/core/request-proposals-guard.d.ts.map +1 -0
  30. package/dist/lib/core/request-proposals-guard.js +65 -0
  31. package/dist/lib/core/request-proposals-guard.js.map +1 -0
  32. package/dist/lib/core/request-proposals-guard.mjs +39 -0
  33. package/dist/lib/core/request-proposals-guard.mjs.map +1 -0
  34. package/dist/lib/core/webhook-registration.d.mts +5 -0
  35. package/dist/lib/core/webhook-registration.d.ts +5 -0
  36. package/dist/lib/core/webhook-registration.d.ts.map +1 -1
  37. package/dist/lib/core/webhook-registration.js +13 -0
  38. package/dist/lib/core/webhook-registration.js.map +1 -1
  39. package/dist/lib/core/webhook-registration.mjs +13 -0
  40. package/dist/lib/core/webhook-registration.mjs.map +1 -1
  41. package/dist/lib/media-buy/compatibility.d.mts +45 -10
  42. package/dist/lib/media-buy/compatibility.d.ts +45 -10
  43. package/dist/lib/media-buy/compatibility.d.ts.map +1 -1
  44. package/dist/lib/media-buy/compatibility.js +295 -113
  45. package/dist/lib/media-buy/compatibility.js.map +1 -1
  46. package/dist/lib/media-buy/compatibility.mjs +295 -113
  47. package/dist/lib/media-buy/compatibility.mjs.map +1 -1
  48. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  49. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  50. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  51. package/dist/lib/types/core.generated.d.mts +334 -85
  52. package/dist/lib/types/core.generated.d.ts +334 -85
  53. package/dist/lib/types/core.generated.d.ts.map +1 -1
  54. package/dist/lib/types/core.generated.js.map +1 -1
  55. package/dist/lib/types/decline-proposals.d.ts +0 -5
  56. package/dist/lib/types/index.d.mts +2 -0
  57. package/dist/lib/types/index.d.ts +2 -0
  58. package/dist/lib/types/index.d.ts.map +1 -1
  59. package/dist/lib/types/index.js.map +1 -1
  60. package/dist/lib/types/index.mjs.map +1 -1
  61. package/dist/lib/types/request-proposals.d.ts +254 -36
  62. package/dist/lib/types/schemas.generated.d.ts +3123 -835
  63. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  64. package/dist/lib/types/schemas.generated.js +192 -85
  65. package/dist/lib/types/schemas.generated.js.map +1 -1
  66. package/dist/lib/types/schemas.generated.mjs +192 -85
  67. package/dist/lib/types/schemas.generated.mjs.map +1 -1
  68. package/dist/lib/types/tools.generated.d.mts +1 -121
  69. package/dist/lib/types/tools.generated.d.ts +1 -121
  70. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  71. package/dist/lib/types/tools.generated.js.map +1 -1
  72. package/dist/lib/version.d.mts +3 -3
  73. package/dist/lib/version.d.ts +3 -3
  74. package/dist/lib/version.js +3 -3
  75. package/dist/lib/version.js.map +1 -1
  76. package/dist/lib/version.mjs +3 -3
  77. package/dist/lib/version.mjs.map +1 -1
  78. package/docs/guides/MEDIA-BUY-3.2-COMPATIBILITY.md +28 -14
  79. package/docs/llms.txt +1 -1
  80. package/package.json +1 -1
@@ -3711,8 +3711,6 @@ const DeclineProposalsResponseSchema = import_zod.z.union([import_zod.z.object({
3711
3711
  }).passthrough(), import_zod.z.object({
3712
3712
  outcome: import_zod.z.literal("unable")
3713
3713
  }).passthrough()])),
3714
- status: import_zod.z.literal("submitted").optional(),
3715
- task_id: import_zod.z.string().min(1).optional(),
3716
3714
  message: import_zod.z.string().max(2e3).optional(),
3717
3715
  errors: import_zod.z.array(ErrorSchema).optional(),
3718
3716
  context: ContextObjectSchema.optional(),
@@ -11790,6 +11788,10 @@ const ValidationResultSchema = import_zod.z.object({
11790
11788
  authorization: AuthorizationResultSchema.optional(),
11791
11789
  ext: ExtensionObjectSchema.optional()
11792
11790
  }).passthrough();
11791
+ const ProductDiscoveryTargetingResolutionSchema = import_zod.z.object({
11792
+ brief_targeting: TargetingOverlaySchema,
11793
+ ext: ExtensionObjectSchema.optional()
11794
+ }).passthrough();
11793
11795
  const AudienceEvidenceSchema = import_zod.z.object({}).passthrough().merge(import_zod.z.object({}).passthrough()).merge(import_zod.z.object({}).passthrough()).merge(import_zod.z.object({
11794
11796
  evidence_id: import_zod.z.string(),
11795
11797
  snapshot_id: import_zod.z.string(),
@@ -13360,10 +13362,6 @@ const ProductSchema = import_zod.z.object({
13360
13362
  }).passthrough().optional(),
13361
13363
  ext: ExtensionObjectSchema.optional()
13362
13364
  }).passthrough();
13363
- const ProductDiscoveryTargetingResolutionSchema = import_zod.z.object({
13364
- brief_targeting: TargetingOverlaySchema,
13365
- ext: ExtensionObjectSchema.optional()
13366
- }).passthrough();
13367
13365
  const ProductAllocationSchema = import_zod.z.object({
13368
13366
  product_id: import_zod.z.string(),
13369
13367
  allocation_percentage: import_zod.z.number().optional(),
@@ -14441,43 +14439,6 @@ const RequestProposalsRequestSchema = import_zod.z.object({
14441
14439
  status: import_zod.z.literal("open").optional()
14442
14440
  }).passthrough()).optional()
14443
14441
  }).passthrough();
14444
- const CanonicalProductSchema = import_zod.z.object({
14445
- product_id: import_zod.z.string(),
14446
- name: import_zod.z.string(),
14447
- description: import_zod.z.string().optional(),
14448
- publisher_properties: import_zod.z.array(PublisherPropertySelectorSchema.and(import_zod.z.object({}).passthrough())).optional(),
14449
- channels: import_zod.z.array(MediaChannelSchema).optional(),
14450
- video_placement_types: import_zod.z.array(VideoPlacementTypeSchema).optional(),
14451
- audio_distribution_types: import_zod.z.array(AudioDistributionTypeSchema).optional(),
14452
- sponsored_placement_types: import_zod.z.array(SponsoredPlacementTypeSchema).optional(),
14453
- social_placement_surfaces: import_zod.z.array(SocialPlacementSurfaceSchema).optional(),
14454
- format_options: import_zod.z.array(CanonicalFormatOptionSchema).optional(),
14455
- placements: import_zod.z.array(CanonicalProductPlacementSchema).optional(),
14456
- delivery_type: DeliveryTypeSchema.optional(),
14457
- exclusivity: ExclusivitySchema.optional(),
14458
- pricing_options: import_zod.z.array(CanonicalPricingOptionSchema).optional(),
14459
- forecast: CanonicalDeliveryForecastSchema.optional(),
14460
- reporting_capabilities: CanonicalReportingCapabilitiesSchema.optional(),
14461
- measurement_terms: CanonicalMeasurementTermsSchema.optional(),
14462
- performance_standards: import_zod.z.array(CanonicalPerformanceStandardSchema).optional(),
14463
- catalog_types: import_zod.z.array(CatalogTypeSchema).optional(),
14464
- signal_targeting_allowed: import_zod.z.boolean().optional(),
14465
- signal_targeting_rules: SignalTargetingRulesSchema.optional(),
14466
- demographic_targeting: DemographicTargetingCapabilitySchema.optional(),
14467
- audience_evidence: import_zod.z.array(CanonicalAudienceEvidenceSchema).optional(),
14468
- audience_evidence_selections: import_zod.z.array(CanonicalAudienceEvidenceSelectionSchema).optional(),
14469
- max_optimization_goals: import_zod.z.number().optional(),
14470
- catalog_match: import_zod.z.object({
14471
- matched_gtins: import_zod.z.array(import_zod.z.string()).optional(),
14472
- matched_ids: import_zod.z.array(import_zod.z.string()).optional(),
14473
- matched_count: import_zod.z.number().optional(),
14474
- submitted_count: import_zod.z.number()
14475
- }).passthrough().optional(),
14476
- brief_relevance: import_zod.z.string().optional(),
14477
- expires_at: import_zod.z.string().optional(),
14478
- allowed_actions: import_zod.z.array(CanonicalProductActionSchema).optional(),
14479
- ext: ExtensionObjectSchema.optional()
14480
- }).passthrough();
14481
14442
  const CommercialTermsSchema = import_zod.z.object({
14482
14443
  source_feed_version: import_zod.z.string().optional(),
14483
14444
  source_pricing_version: import_zod.z.string().optional(),
@@ -15090,6 +15051,43 @@ const CanonicalProposalSchema = (() => {
15090
15051
  extend: objectSchema.extend.bind(objectSchema)
15091
15052
  });
15092
15053
  })();
15054
+ const CanonicalProductSchema = import_zod.z.object({
15055
+ product_id: import_zod.z.string(),
15056
+ name: import_zod.z.string(),
15057
+ description: import_zod.z.string().optional(),
15058
+ publisher_properties: import_zod.z.array(PublisherPropertySelectorSchema.and(import_zod.z.object({}).passthrough())).optional(),
15059
+ channels: import_zod.z.array(MediaChannelSchema).optional(),
15060
+ video_placement_types: import_zod.z.array(VideoPlacementTypeSchema).optional(),
15061
+ audio_distribution_types: import_zod.z.array(AudioDistributionTypeSchema).optional(),
15062
+ sponsored_placement_types: import_zod.z.array(SponsoredPlacementTypeSchema).optional(),
15063
+ social_placement_surfaces: import_zod.z.array(SocialPlacementSurfaceSchema).optional(),
15064
+ format_options: import_zod.z.array(CanonicalFormatOptionSchema).optional(),
15065
+ placements: import_zod.z.array(CanonicalProductPlacementSchema).optional(),
15066
+ delivery_type: DeliveryTypeSchema.optional(),
15067
+ exclusivity: ExclusivitySchema.optional(),
15068
+ pricing_options: import_zod.z.array(CanonicalPricingOptionSchema).optional(),
15069
+ forecast: CanonicalDeliveryForecastSchema.optional(),
15070
+ reporting_capabilities: CanonicalReportingCapabilitiesSchema.optional(),
15071
+ measurement_terms: CanonicalMeasurementTermsSchema.optional(),
15072
+ performance_standards: import_zod.z.array(CanonicalPerformanceStandardSchema).optional(),
15073
+ catalog_types: import_zod.z.array(CatalogTypeSchema).optional(),
15074
+ signal_targeting_allowed: import_zod.z.boolean().optional(),
15075
+ signal_targeting_rules: SignalTargetingRulesSchema.optional(),
15076
+ demographic_targeting: DemographicTargetingCapabilitySchema.optional(),
15077
+ audience_evidence: import_zod.z.array(CanonicalAudienceEvidenceSchema).optional(),
15078
+ audience_evidence_selections: import_zod.z.array(CanonicalAudienceEvidenceSelectionSchema).optional(),
15079
+ max_optimization_goals: import_zod.z.number().optional(),
15080
+ catalog_match: import_zod.z.object({
15081
+ matched_gtins: import_zod.z.array(import_zod.z.string()).optional(),
15082
+ matched_ids: import_zod.z.array(import_zod.z.string()).optional(),
15083
+ matched_count: import_zod.z.number().optional(),
15084
+ submitted_count: import_zod.z.number()
15085
+ }).passthrough().optional(),
15086
+ brief_relevance: import_zod.z.string().optional(),
15087
+ expires_at: import_zod.z.string().optional(),
15088
+ allowed_actions: import_zod.z.array(CanonicalProductActionSchema).optional(),
15089
+ ext: ExtensionObjectSchema.optional()
15090
+ }).passthrough();
15093
15091
  const BuyProductsRequestSchema = import_zod.z.object({
15094
15092
  adcp_version: import_zod.z.string().optional(),
15095
15093
  adcp_major_version: import_zod.z.number().optional(),
@@ -16625,58 +16623,135 @@ const ValidatePropertyDeliveryResponseSchema = import_zod.z.object({
16625
16623
  list_resolved_at: import_zod.z.iso.datetime().optional(),
16626
16624
  ext: ExtensionObjectSchema.optional()
16627
16625
  }).passthrough();
16628
- const MediaBuySchema = import_zod.z.object({
16629
- media_buy_id: import_zod.z.string(),
16630
- name: import_zod.z.string().min(1).max(255).regex(/\S/).optional(),
16631
- accepted_proposal_id: import_zod.z.string().min(1).max(255).optional(),
16632
- accepted_proposal_terms_digest: import_zod.z.string().regex(/^sha256:[A-Za-z0-9_-]{43}$/).optional(),
16633
- account: AccountSchema.optional(),
16634
- status: MediaBuyStatusSchema,
16635
- health: MediaBuyHealthSchema.and(import_zod.z.string()).optional(),
16636
- impairments: import_zod.z.array(ImpairmentSchema).optional(),
16637
- rejection_reason: import_zod.z.string().optional(),
16638
- confirmed_at: import_zod.z.iso.datetime().nullable(),
16639
- cancellation: import_zod.z.object({
16640
- canceled_at: import_zod.z.iso.datetime(),
16641
- canceled_by: CanceledBySchema,
16642
- reason: import_zod.z.string().max(500).optional()
16643
- }).passthrough().optional(),
16644
- total_budget: import_zod.z.number().min(0),
16645
- daily_budget_cap: import_zod.z.number().min(0).optional(),
16646
- budget_cap_timezone: import_zod.z.string().optional(),
16647
- currency: import_zod.z.string().regex(/^[A-Z]{3}$/).optional(),
16648
- budget_allocation: BudgetAllocationSchema.optional(),
16649
- pacing: PacingSchema.optional(),
16650
- bidding: BiddingPolicySchema.optional(),
16651
- packages: import_zod.z.array(PackageSchema),
16652
- context: ContextObjectSchema.optional(),
16653
- invoice_recipient: BusinessEntity1Schema.optional(),
16654
- creative_deadline: import_zod.z.iso.datetime().optional(),
16655
- revision: import_zod.z.number().min(1),
16656
- created_at: import_zod.z.iso.datetime().optional(),
16657
- updated_at: import_zod.z.iso.datetime().optional(),
16658
- ext: ExtensionObjectSchema.optional()
16659
- }).passthrough();
16660
16626
  const RequestProposalsResponseSchema = import_zod.z.union([import_zod.z.object({
16627
+ adcp_version: import_zod.z.string().optional(),
16661
16628
  outcome: import_zod.z.literal("proposed"),
16662
- status: import_zod.z.literal("completed").optional()
16629
+ reason: import_zod.z.never().optional(),
16630
+ suggestions: import_zod.z.never().optional(),
16631
+ proposals: import_zod.z.tuple([CanonicalProposalSchema.and(import_zod.z.object({
16632
+ proposal_status: import_zod.z.literal("draft"),
16633
+ expires_at: import_zod.z.iso.datetime()
16634
+ }).passthrough())]).rest(CanonicalProposalSchema.and(import_zod.z.object({
16635
+ proposal_status: import_zod.z.literal("draft"),
16636
+ expires_at: import_zod.z.iso.datetime()
16637
+ }).passthrough())),
16638
+ products: import_zod.z.array(CanonicalProductSchema),
16639
+ incomplete: import_zod.z.tuple([import_zod.z.object({
16640
+ scope: import_zod.z.union([import_zod.z.literal("products"), import_zod.z.literal("pricing"), import_zod.z.literal("forecast"), import_zod.z.literal("proposals"), import_zod.z.literal("wholesale_feed")]),
16641
+ description: import_zod.z.string().min(1),
16642
+ estimated_wait: DurationSchema.optional()
16643
+ }).passthrough()]).rest(import_zod.z.object({
16644
+ scope: import_zod.z.union([import_zod.z.literal("products"), import_zod.z.literal("pricing"), import_zod.z.literal("forecast"), import_zod.z.literal("proposals"), import_zod.z.literal("wholesale_feed")]),
16645
+ description: import_zod.z.string().min(1),
16646
+ estimated_wait: DurationSchema.optional()
16647
+ }).passthrough()).optional(),
16648
+ purchase_continuation: import_zod.z.never().optional(),
16649
+ targeting_resolution: ProductDiscoveryTargetingResolutionSchema.optional(),
16650
+ status: import_zod.z.literal("completed").optional(),
16651
+ task_id: import_zod.z.never().optional(),
16652
+ message: import_zod.z.string().max(2e3).optional(),
16653
+ errors: import_zod.z.array(ErrorSchema).optional(),
16654
+ context: ContextObjectSchema.optional(),
16655
+ ext: ExtensionObjectSchema.optional(),
16656
+ replayed: import_zod.z.literal(true).optional()
16663
16657
  }).passthrough(), import_zod.z.object({
16658
+ adcp_version: import_zod.z.string().optional(),
16664
16659
  outcome: import_zod.z.literal("products_available"),
16665
- status: import_zod.z.literal("completed").optional()
16660
+ reason: import_zod.z.never().optional(),
16661
+ suggestions: import_zod.z.never().optional(),
16662
+ proposals: import_zod.z.never().optional(),
16663
+ products: import_zod.z.array(CanonicalProductSchema),
16664
+ incomplete: import_zod.z.tuple([import_zod.z.object({
16665
+ scope: import_zod.z.union([import_zod.z.literal("products"), import_zod.z.literal("pricing"), import_zod.z.literal("forecast"), import_zod.z.literal("proposals"), import_zod.z.literal("wholesale_feed")]),
16666
+ description: import_zod.z.string().min(1),
16667
+ estimated_wait: DurationSchema.optional()
16668
+ }).passthrough()]).rest(import_zod.z.object({
16669
+ scope: import_zod.z.union([import_zod.z.literal("products"), import_zod.z.literal("pricing"), import_zod.z.literal("forecast"), import_zod.z.literal("proposals"), import_zod.z.literal("wholesale_feed")]),
16670
+ description: import_zod.z.string().min(1),
16671
+ estimated_wait: DurationSchema.optional()
16672
+ }).passthrough()).optional(),
16673
+ purchase_continuation: import_zod.z.union([import_zod.z.object({
16674
+ kind: import_zod.z.literal("listed_purchase"),
16675
+ product_ids: import_zod.z.array(import_zod.z.string()),
16676
+ cache_scope: import_zod.z.literal("account"),
16677
+ feed_version: import_zod.z.string().min(1),
16678
+ pricing_version: import_zod.z.string().min(1).optional()
16679
+ }).passthrough(), import_zod.z.object({
16680
+ kind: import_zod.z.literal("legacy_create"),
16681
+ continuation_token: import_zod.z.string().min(16),
16682
+ continuation_expires_at: import_zod.z.iso.datetime(),
16683
+ source_adcp_version: import_zod.z.union([import_zod.z.literal("2.5"), import_zod.z.literal("3.0"), import_zod.z.literal("3.1")]),
16684
+ product_ids: import_zod.z.array(import_zod.z.string()),
16685
+ losses: import_zod.z.tuple([import_zod.z.union([import_zod.z.literal("feed_version_not_atomic"), import_zod.z.literal("pricing_version_not_atomic"), import_zod.z.literal("mutation_idempotency_not_guaranteed")]), import_zod.z.union([import_zod.z.literal("feed_version_not_atomic"), import_zod.z.literal("pricing_version_not_atomic"), import_zod.z.literal("mutation_idempotency_not_guaranteed")])]).rest(import_zod.z.union([import_zod.z.literal("feed_version_not_atomic"), import_zod.z.literal("pricing_version_not_atomic"), import_zod.z.literal("mutation_idempotency_not_guaranteed")])),
16686
+ requires_explicit_acceptance: import_zod.z.literal(true)
16687
+ }).passthrough().superRefine((value, ctx) => {
16688
+ if (value.product_ids.length === 0) {
16689
+ ctx.addIssue({ code: "custom", path: ["product_ids"], message: "product_ids must contain at least one entry" });
16690
+ }
16691
+ if (value.product_ids.some((productId) => productId.length === 0)) {
16692
+ ctx.addIssue({ code: "custom", path: ["product_ids"], message: "product_ids must not contain empty IDs" });
16693
+ }
16694
+ if (new Set(value.product_ids).size !== value.product_ids.length) {
16695
+ ctx.addIssue({ code: "custom", path: ["product_ids"], message: "product_ids must be unique" });
16696
+ }
16697
+ if (value.losses.length < 2) {
16698
+ ctx.addIssue({ code: "custom", path: ["losses"], message: "losses must contain at least two entries" });
16699
+ }
16700
+ if (new Set(value.losses).size !== value.losses.length) {
16701
+ ctx.addIssue({ code: "custom", path: ["losses"], message: "losses must be unique" });
16702
+ }
16703
+ for (const required of ["feed_version_not_atomic", "pricing_version_not_atomic"]) {
16704
+ if (!value.losses.includes(required)) {
16705
+ ctx.addIssue({ code: "custom", path: ["losses"], message: `losses must contain ${required}` });
16706
+ }
16707
+ }
16708
+ if (value.source_adcp_version === "2.5" && !value.losses.includes("mutation_idempotency_not_guaranteed")) {
16709
+ ctx.addIssue({ code: "custom", path: ["losses"], message: "AdCP 2.5 losses must contain mutation_idempotency_not_guaranteed" });
16710
+ }
16711
+ })]),
16712
+ targeting_resolution: ProductDiscoveryTargetingResolutionSchema.optional(),
16713
+ status: import_zod.z.literal("completed").optional(),
16714
+ task_id: import_zod.z.never().optional(),
16715
+ message: import_zod.z.string().max(2e3).optional(),
16716
+ errors: import_zod.z.array(ErrorSchema).optional(),
16717
+ context: ContextObjectSchema.optional(),
16718
+ ext: ExtensionObjectSchema.optional(),
16719
+ replayed: import_zod.z.literal(true).optional()
16666
16720
  }).passthrough(), import_zod.z.object({
16721
+ adcp_version: import_zod.z.string().optional(),
16667
16722
  outcome: import_zod.z.literal("rejected"),
16668
- status: import_zod.z.literal("completed").optional()
16669
- }).passthrough(), CompactTaskSubmittedSchema]).and(import_zod.z.object({
16723
+ reason: import_zod.z.string().min(1),
16724
+ suggestions: import_zod.z.array(import_zod.z.string()).optional(),
16725
+ proposals: import_zod.z.never().optional(),
16726
+ products: import_zod.z.never().optional(),
16727
+ incomplete: import_zod.z.never().optional(),
16728
+ purchase_continuation: import_zod.z.never().optional(),
16729
+ targeting_resolution: ProductDiscoveryTargetingResolutionSchema.optional(),
16730
+ status: import_zod.z.literal("completed").optional(),
16731
+ task_id: import_zod.z.never().optional(),
16732
+ message: import_zod.z.string().max(2e3).optional(),
16733
+ errors: import_zod.z.array(ErrorSchema).optional(),
16734
+ context: ContextObjectSchema.optional(),
16735
+ ext: ExtensionObjectSchema.optional(),
16736
+ replayed: import_zod.z.literal(true).optional()
16737
+ }).passthrough(), import_zod.z.object({
16670
16738
  adcp_version: import_zod.z.string().optional(),
16671
16739
  outcome: import_zod.z.union([import_zod.z.literal("proposed"), import_zod.z.literal("products_available"), import_zod.z.literal("rejected")]).optional(),
16672
16740
  reason: import_zod.z.string().min(1).optional(),
16673
16741
  suggestions: import_zod.z.array(import_zod.z.string()).optional(),
16674
- proposals: import_zod.z.array(CanonicalProposalSchema.and(import_zod.z.object({
16742
+ proposals: import_zod.z.tuple([CanonicalProposalSchema.and(import_zod.z.object({
16743
+ proposal_status: import_zod.z.literal("draft"),
16744
+ expires_at: import_zod.z.iso.datetime()
16745
+ }).passthrough())]).rest(CanonicalProposalSchema.and(import_zod.z.object({
16675
16746
  proposal_status: import_zod.z.literal("draft"),
16676
16747
  expires_at: import_zod.z.iso.datetime()
16677
16748
  }).passthrough())).optional(),
16678
16749
  products: import_zod.z.array(CanonicalProductSchema).optional(),
16679
- incomplete: import_zod.z.array(import_zod.z.object({
16750
+ incomplete: import_zod.z.tuple([import_zod.z.object({
16751
+ scope: import_zod.z.union([import_zod.z.literal("products"), import_zod.z.literal("pricing"), import_zod.z.literal("forecast"), import_zod.z.literal("proposals"), import_zod.z.literal("wholesale_feed")]),
16752
+ description: import_zod.z.string().min(1),
16753
+ estimated_wait: DurationSchema.optional()
16754
+ }).passthrough()]).rest(import_zod.z.object({
16680
16755
  scope: import_zod.z.union([import_zod.z.literal("products"), import_zod.z.literal("pricing"), import_zod.z.literal("forecast"), import_zod.z.literal("proposals"), import_zod.z.literal("wholesale_feed")]),
16681
16756
  description: import_zod.z.string().min(1),
16682
16757
  estimated_wait: DurationSchema.optional()
@@ -16693,7 +16768,7 @@ const RequestProposalsResponseSchema = import_zod.z.union([import_zod.z.object({
16693
16768
  continuation_expires_at: import_zod.z.iso.datetime(),
16694
16769
  source_adcp_version: import_zod.z.union([import_zod.z.literal("2.5"), import_zod.z.literal("3.0"), import_zod.z.literal("3.1")]),
16695
16770
  product_ids: import_zod.z.array(import_zod.z.string()),
16696
- losses: import_zod.z.array(import_zod.z.union([import_zod.z.literal("feed_version_not_atomic"), import_zod.z.literal("pricing_version_not_atomic"), import_zod.z.literal("mutation_idempotency_not_guaranteed")])),
16771
+ losses: import_zod.z.tuple([import_zod.z.union([import_zod.z.literal("feed_version_not_atomic"), import_zod.z.literal("pricing_version_not_atomic"), import_zod.z.literal("mutation_idempotency_not_guaranteed")]), import_zod.z.union([import_zod.z.literal("feed_version_not_atomic"), import_zod.z.literal("pricing_version_not_atomic"), import_zod.z.literal("mutation_idempotency_not_guaranteed")])]).rest(import_zod.z.union([import_zod.z.literal("feed_version_not_atomic"), import_zod.z.literal("pricing_version_not_atomic"), import_zod.z.literal("mutation_idempotency_not_guaranteed")])),
16697
16772
  requires_explicit_acceptance: import_zod.z.literal(true)
16698
16773
  }).passthrough().superRefine((value, ctx) => {
16699
16774
  if (value.product_ids.length === 0) {
@@ -16721,14 +16796,14 @@ const RequestProposalsResponseSchema = import_zod.z.union([import_zod.z.object({
16721
16796
  }
16722
16797
  })]).optional(),
16723
16798
  targeting_resolution: ProductDiscoveryTargetingResolutionSchema.optional(),
16724
- status: import_zod.z.union([import_zod.z.literal("completed"), import_zod.z.literal("submitted")]).optional(),
16725
- task_id: import_zod.z.string().min(1).optional(),
16799
+ status: import_zod.z.literal("submitted"),
16800
+ task_id: import_zod.z.string().min(1),
16726
16801
  message: import_zod.z.string().max(2e3).optional(),
16727
16802
  errors: import_zod.z.array(ErrorSchema).optional(),
16728
16803
  context: ContextObjectSchema.optional(),
16729
16804
  ext: ExtensionObjectSchema.optional(),
16730
16805
  replayed: import_zod.z.literal(true).optional()
16731
- }).passthrough()).superRefine((value, ctx) => {
16806
+ }).passthrough()]).superRefine((value, ctx) => {
16732
16807
  const present = (field) => Object.prototype.hasOwnProperty.call(value, field);
16733
16808
  const requireNonEmptyArray = (field) => {
16734
16809
  if (!Array.isArray(value[field]) || value[field].length === 0) {
@@ -16786,6 +16861,38 @@ const RequestProposalsResponseSchema = import_zod.z.union([import_zod.z.object({
16786
16861
  forbid(["proposals", "products", "incomplete", "purchase_continuation", "task_id"]);
16787
16862
  }
16788
16863
  });
16864
+ const MediaBuySchema = import_zod.z.object({
16865
+ media_buy_id: import_zod.z.string(),
16866
+ name: import_zod.z.string().min(1).max(255).regex(/\S/).optional(),
16867
+ accepted_proposal_id: import_zod.z.string().min(1).max(255).optional(),
16868
+ accepted_proposal_terms_digest: import_zod.z.string().regex(/^sha256:[A-Za-z0-9_-]{43}$/).optional(),
16869
+ account: AccountSchema.optional(),
16870
+ status: MediaBuyStatusSchema,
16871
+ health: MediaBuyHealthSchema.and(import_zod.z.string()).optional(),
16872
+ impairments: import_zod.z.array(ImpairmentSchema).optional(),
16873
+ rejection_reason: import_zod.z.string().optional(),
16874
+ confirmed_at: import_zod.z.iso.datetime().nullable(),
16875
+ cancellation: import_zod.z.object({
16876
+ canceled_at: import_zod.z.iso.datetime(),
16877
+ canceled_by: CanceledBySchema,
16878
+ reason: import_zod.z.string().max(500).optional()
16879
+ }).passthrough().optional(),
16880
+ total_budget: import_zod.z.number().min(0),
16881
+ daily_budget_cap: import_zod.z.number().min(0).optional(),
16882
+ budget_cap_timezone: import_zod.z.string().optional(),
16883
+ currency: import_zod.z.string().regex(/^[A-Z]{3}$/).optional(),
16884
+ budget_allocation: BudgetAllocationSchema.optional(),
16885
+ pacing: PacingSchema.optional(),
16886
+ bidding: BiddingPolicySchema.optional(),
16887
+ packages: import_zod.z.array(PackageSchema),
16888
+ context: ContextObjectSchema.optional(),
16889
+ invoice_recipient: BusinessEntity1Schema.optional(),
16890
+ creative_deadline: import_zod.z.iso.datetime().optional(),
16891
+ revision: import_zod.z.number().min(1),
16892
+ created_at: import_zod.z.iso.datetime().optional(),
16893
+ updated_at: import_zod.z.iso.datetime().optional(),
16894
+ ext: ExtensionObjectSchema.optional()
16895
+ }).passthrough();
16789
16896
  const RefineProposalsResponseSchema = import_zod.z.union([import_zod.z.object({
16790
16897
  adcp_version: import_zod.z.string().optional(),
16791
16898
  results: import_zod.z.array(import_zod.z.union([import_zod.z.object({