@apostra/sdk 0.39.0 → 0.40.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.
@@ -710,7 +710,7 @@ export type GetData = {
710
710
  */
711
711
  accountId?: number;
712
712
  /**
713
- * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. For seller, the advertiser to price for with include products, and the advertiser partnerStatus is read for instead of the account.
713
+ * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. Buyer wholesale_product: the one searched with. For seller, the advertiser to price include products for and read partnerStatus for, instead of the account.
714
714
  */
715
715
  advertiserId?: string;
716
716
  /**
@@ -948,7 +948,7 @@ export type GetData = {
948
948
  */
949
949
  accountId?: number;
950
950
  /**
951
- * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. For seller, the advertiser to price for with include products, and the advertiser partnerStatus is read for instead of the account.
951
+ * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. Buyer wholesale_product: the one searched with. For seller, the advertiser to price include products for and read partnerStatus for, instead of the account.
952
952
  */
953
953
  advertiserId?: string;
954
954
  /**
@@ -1186,7 +1186,7 @@ export type GetData = {
1186
1186
  */
1187
1187
  accountId?: number;
1188
1188
  /**
1189
- * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. For seller, the advertiser to price for with include products, and the advertiser partnerStatus is read for instead of the account.
1189
+ * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. Buyer wholesale_product: the one searched with. For seller, the advertiser to price include products for and read partnerStatus for, instead of the account.
1190
1190
  */
1191
1191
  advertiserId?: string;
1192
1192
  /**
@@ -1420,7 +1420,7 @@ export type GetData = {
1420
1420
  */
1421
1421
  accountId?: number;
1422
1422
  /**
1423
- * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. For seller, the advertiser to price for with include products, and the advertiser partnerStatus is read for instead of the account.
1423
+ * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. Buyer wholesale_product: the one searched with. For seller, the advertiser to price include products for and read partnerStatus for, instead of the account.
1424
1424
  */
1425
1425
  advertiserId: string;
1426
1426
  /**
@@ -1655,7 +1655,7 @@ export type GetData = {
1655
1655
  */
1656
1656
  accountId?: number;
1657
1657
  /**
1658
- * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. For seller, the advertiser to price for with include products, and the advertiser partnerStatus is read for instead of the account.
1658
+ * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. Buyer wholesale_product: the one searched with. For seller, the advertiser to price include products for and read partnerStatus for, instead of the account.
1659
1659
  */
1660
1660
  advertiserId: string;
1661
1661
  /**
@@ -1894,7 +1894,7 @@ export type GetData = {
1894
1894
  */
1895
1895
  accountId?: number;
1896
1896
  /**
1897
- * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. For seller, the advertiser to price for with include products, and the advertiser partnerStatus is read for instead of the account.
1897
+ * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. Buyer wholesale_product: the one searched with. For seller, the advertiser to price include products for and read partnerStatus for, instead of the account.
1898
1898
  */
1899
1899
  advertiserId: string;
1900
1900
  /**
@@ -2132,7 +2132,7 @@ export type GetData = {
2132
2132
  */
2133
2133
  accountId?: number;
2134
2134
  /**
2135
- * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. For seller, the advertiser to price for with include products, and the advertiser partnerStatus is read for instead of the account.
2135
+ * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. Buyer wholesale_product: the one searched with. For seller, the advertiser to price include products for and read partnerStatus for, instead of the account.
2136
2136
  */
2137
2137
  advertiserId: string;
2138
2138
  /**
@@ -2599,7 +2599,7 @@ export type GetData = {
2599
2599
  */
2600
2600
  accountId?: number;
2601
2601
  /**
2602
- * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. For seller, the advertiser to price for with include products, and the advertiser partnerStatus is read for instead of the account.
2602
+ * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. Buyer wholesale_product: the one searched with. For seller, the advertiser to price include products for and read partnerStatus for, instead of the account.
2603
2603
  */
2604
2604
  advertiserId: string;
2605
2605
  /**
@@ -2834,7 +2834,7 @@ export type GetData = {
2834
2834
  */
2835
2835
  accountId?: number;
2836
2836
  /**
2837
- * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. For seller, the advertiser to price for with include products, and the advertiser partnerStatus is read for instead of the account.
2837
+ * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. Buyer wholesale_product: the one searched with. For seller, the advertiser to price include products for and read partnerStatus for, instead of the account.
2838
2838
  */
2839
2839
  advertiserId?: string;
2840
2840
  /**
@@ -3069,7 +3069,7 @@ export type GetData = {
3069
3069
  */
3070
3070
  accountId?: number;
3071
3071
  /**
3072
- * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. For seller, the advertiser to price for with include products, and the advertiser partnerStatus is read for instead of the account.
3072
+ * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. Buyer wholesale_product: the one searched with. For seller, the advertiser to price include products for and read partnerStatus for, instead of the account.
3073
3073
  */
3074
3074
  advertiserId?: string;
3075
3075
  /**
@@ -3303,10 +3303,6 @@ export type GetData = {
3303
3303
  * The Apostra accountId this call runs in, from get_status. On a member read without memberAccountId: deprecated, read as memberAccountId.
3304
3304
  */
3305
3305
  accountId?: number;
3306
- /**
3307
- * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. For seller, the advertiser to price for with include products, and the advertiser partnerStatus is read for instead of the account.
3308
- */
3309
- advertiserId?: string;
3310
3306
  /**
3311
3307
  * For kind property_list with include report: the report id returned by a save_property_list check. No list id is needed.
3312
3308
  */
@@ -3505,6 +3501,242 @@ export type GetData = {
3505
3501
  * For kind proposal with include products: the cursor from the previous products page of the same proposal.
3506
3502
  */
3507
3503
  proposalProductsCursor?: string;
3504
+ advertiserId?: never;
3505
+ }) | (unknown & {
3506
+ kind: 'wholesale_product';
3507
+ /**
3508
+ * The id from search or an earlier result; never guess one. For skill, an exact id the user gave also works. Omit it for singleton kinds, audience, and a property_list report read by reportId. A work_item also needs workItemKind.
3509
+ */
3510
+ id: string;
3511
+ /**
3512
+ * For kind session: pageNextAfter from the previous read to get the next page of events, or resumeAfter to catch up later.
3513
+ */
3514
+ after?: string;
3515
+ /**
3516
+ * For kind session, with after: the snapshotThrough from the previous read, so new events do not shift the pages.
3517
+ */
3518
+ through?: string;
3519
+ /**
3520
+ * For kind session: events per page, default 50. Lower it if a page is too large to return.
3521
+ */
3522
+ limit?: number;
3523
+ /**
3524
+ * For kind media_buy in a seller account: the buyer Account id, needed when the media-buy id alone is ambiguous across buyers.
3525
+ */
3526
+ buyerAccountId?: number;
3527
+ /**
3528
+ * Deprecated: send buyerAccountId instead.
3529
+ *
3530
+ * @deprecated
3531
+ */
3532
+ buyerCustomerId?: number;
3533
+ /**
3534
+ * Required for kind member: the account the member belongs to, this account or a direct child.
3535
+ */
3536
+ memberAccountId?: number;
3537
+ /**
3538
+ * The Apostra accountId this call runs in, from get_status. On a member read without memberAccountId: deprecated, read as memberAccountId.
3539
+ */
3540
+ accountId?: number;
3541
+ /**
3542
+ * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. Buyer wholesale_product: the one searched with. For seller, the advertiser to price include products for and read partnerStatus for, instead of the account.
3543
+ */
3544
+ advertiserId: string;
3545
+ /**
3546
+ * For kind property_list with include report: the report id returned by a save_property_list check. No list id is needed.
3547
+ */
3548
+ reportId?: string;
3549
+ /**
3550
+ * For kind property_list: where to start the next page of identifiers, from the previous read.
3551
+ */
3552
+ identifierOffset?: number;
3553
+ /**
3554
+ * For kind property_list: which identifiers to page through: all (the default), unresolved, or registered.
3555
+ */
3556
+ identifierCategory?: 'all' | 'unresolved' | 'registered';
3557
+ /**
3558
+ * For kind seller with include products and advertiserId: the productQueryId from the previous read, to poll products that were still loading.
3559
+ */
3560
+ productQueryId?: string;
3561
+ /**
3562
+ * For kind seller, with productQueryId: the productRevision from the previous read, so only changes since then come back.
3563
+ */
3564
+ productRevision?: number;
3565
+ /**
3566
+ * For kind agent with include diagnostics: one validation run id taken from validationRuns.
3567
+ */
3568
+ validationRunId?: string;
3569
+ /**
3570
+ * Required for kind work_item: which queue holds it. modular_source also needs sourceId; creative_review and media_buy_approval take no sourceId.
3571
+ */
3572
+ workItemKind?: 'creative_review' | 'media_buy_approval' | 'modular_source';
3573
+ /**
3574
+ * inventory_source: diagnostics, adServerConnection, adServerStatus, syncHistory, sandboxAccount, modularReadiness. seller: listing, identity, commitmentRecord, scores, products (needs buyer advertiserId). playbook: versions, discounts. business_rules: versions, approvalRouting. agent: certification, validationRuns, diagnostics. campaign: mediaBuys, creatives, tracking, propertyLists. media_buy: products, creatives, deliverySummary, liveStatus; seller diagnostics. proposal: brief, products, versions, mediaBuys. advertiser: tracking, accounts. connection: inventory. creative: preview. catalog: items. material: source_access, repeats, each options.pages key but candidates. property_list: report.
3575
+ */
3576
+ include?: Array<'diagnostics' | 'adServerConnection' | 'adServerStatus' | 'syncHistory' | 'sandboxAccount' | 'modularReadiness' | 'poweredByAgent' | 'testRuns' | 'mappingWorkspace' | 'mediaBuys' | 'proposals' | 'creatives' | 'recentActivity' | 'deliverySummary' | 'sourceIdentity' | 'tracking' | 'propertyLists' | 'sellerScorecard' | 'versions' | 'discounts' | 'approvalRouting' | 'listing' | 'identity' | 'readiness' | 'operating' | 'entitlements' | 'teaching' | 'commitmentRecord' | 'scores' | 'discoveryCard' | 'brief' | 'products' | 'evaluation' | 'certification' | 'validationRuns' | 'webhookDeliveries' | 'liveStatus' | 'pendingChange' | 'operations' | 'accounts' | 'brandProfile' | 'inventory' | 'preview' | 'items' | 'report' | 'lifecycle' | 'capacity' | 'source_access' | 'rendition_blocks' | 'visual_assets' | 'extraction_diagnostics' | 'composition_receipts' | 'repeats' | 'usage' | 'rate_card_preview' | 'avails_sheet_preview'>;
3577
+ /**
3578
+ * For kind catalog with include items: which items to return and the cursor for the next page.
3579
+ */
3580
+ items?: {
3581
+ /**
3582
+ * Filters for the catalog items page; every filter given must match.
3583
+ */
3584
+ filter?: {
3585
+ /**
3586
+ * Only catalog items with these exact AdCP item keys (e.g. hotel_id), up to 50.
3587
+ */
3588
+ ids?: Array<string>;
3589
+ /**
3590
+ * Only catalog items with these exact product GTINs, up to 50.
3591
+ */
3592
+ gtins?: Array<string>;
3593
+ /**
3594
+ * Only catalog items carrying any of these tags.
3595
+ */
3596
+ tags?: Array<string>;
3597
+ /**
3598
+ * Only catalog items in exactly this category.
3599
+ */
3600
+ category?: string;
3601
+ /**
3602
+ * Only catalog items whose text contains this phrase.
3603
+ */
3604
+ text?: string;
3605
+ };
3606
+ /**
3607
+ * The cursor from the previous catalog items page.
3608
+ */
3609
+ cursor?: string;
3610
+ };
3611
+ /**
3612
+ * For kind material: which revision to read, paging for each collection, and selectors that narrow them.
3613
+ */
3614
+ options?: {
3615
+ /**
3616
+ * Read this exact past source revision instead of the current one.
3617
+ */
3618
+ sourceRevision?: number;
3619
+ /**
3620
+ * Read this rendition of the source revision; omit for the active rendition.
3621
+ */
3622
+ renditionRevision?: number;
3623
+ /**
3624
+ * Paging for each collection in a material read. A candidates page needs no include; a page for any other collection applies only when you also request its matching include.
3625
+ */
3626
+ pages?: {
3627
+ /**
3628
+ * Page through the extracted facts proposed for the playbook, rules, products, or seller profile. Default 25 rows; no include needed.
3629
+ */
3630
+ candidates?: GetRequestOptionsPagesCandidates;
3631
+ /**
3632
+ * Page through extracted text blocks in reading order. Needs include rendition_blocks; default 50 rows.
3633
+ */
3634
+ rendition_blocks?: GetRequestOptionsPagesRenditionBlocks;
3635
+ /**
3636
+ * Page through extracted images. Needs include visual_assets; default 25 rows, at most 50.
3637
+ */
3638
+ visual_assets?: GetRequestOptionsPagesVisualAssets;
3639
+ /**
3640
+ * Page through extraction warnings and errors. Needs include extraction_diagnostics; default 50 rows.
3641
+ */
3642
+ extraction_diagnostics?: GetRequestOptionsPagesExtractionDiagnostics;
3643
+ /**
3644
+ * Page through records of this material being used in RFP responses. Needs include composition_receipts; default 50 rows.
3645
+ */
3646
+ composition_receipts?: GetRequestOptionsPagesCompositionReceipts;
3647
+ /**
3648
+ * Page through where this material was used. Needs include usage; at most 48 rows, sent to the app rather than to you.
3649
+ */
3650
+ usage?: GetRequestOptionsPagesUsage;
3651
+ };
3652
+ /**
3653
+ * Narrow the text blocks, images, and usage returned. A selector is ignored for collections it does not apply to.
3654
+ */
3655
+ select?: {
3656
+ /**
3657
+ * Keep only text blocks of these kinds, such as heading, table, or speaker_notes.
3658
+ */
3659
+ blockKinds?: Array<'heading' | 'paragraph' | 'list' | 'table' | 'caption' | 'speaker_notes' | 'ocr' | 'accessibility_text' | 'other'>;
3660
+ /**
3661
+ * Limit text blocks, images, and usage to one page, slide, or sheet by its unit ID.
3662
+ */
3663
+ unitId?: string;
3664
+ /**
3665
+ * Keep only images of these kinds, such as photo, logo, or chart.
3666
+ */
3667
+ assetKinds?: Array<'photo' | 'illustration' | 'logo' | 'chart' | 'diagram' | 'screenshot' | 'background' | 'other'>;
3668
+ /**
3669
+ * Keep only images whose reuse rights are any of these, for example allowed or requires_approval.
3670
+ */
3671
+ reusePolicies?: Array<'allowed' | 'requires_approval' | 'prohibited' | 'unknown'>;
3672
+ /**
3673
+ * Keep only images whose extraction finished as ready, degraded, or failed.
3674
+ */
3675
+ assetStatuses?: Array<'ready' | 'degraded' | 'failed'>;
3676
+ };
3677
+ };
3678
+ /**
3679
+ * For kind playbook: read this past version with its content, for example to save it again as current.
3680
+ */
3681
+ version?: number;
3682
+ /**
3683
+ * For kind notification_config: where to start the next page of notification and agent event subscriptions, which come newest first.
3684
+ */
3685
+ subscriptionsOffset?: number;
3686
+ /**
3687
+ * For kind connection: where to start the next page of provider accounts found on the connection.
3688
+ */
3689
+ connectionAccountsOffset?: number;
3690
+ /**
3691
+ * For kind connection: where to start the next page of advertiser-to-account mappings.
3692
+ */
3693
+ connectionMappingsOffset?: number;
3694
+ /**
3695
+ * Required for kind connection with include inventory: the accounts[].id whose event sources and audiences to list.
3696
+ */
3697
+ connectionAccountId?: string;
3698
+ /**
3699
+ * For kind connection with include inventory: where to start the next page, 50 per page.
3700
+ */
3701
+ connectionInventoryOffset?: number;
3702
+ /**
3703
+ * For kind connection with include inventory: limit the page to seller audiences or event sources.
3704
+ */
3705
+ connectionInventoryObjectType?: 'audience' | 'event_source';
3706
+ /**
3707
+ * For kind connection: the seller or creative engine you expect this connection to reach. The read fails if it reaches another one.
3708
+ */
3709
+ connectionTarget?: {
3710
+ /**
3711
+ * Whether you expect a seller or a creative engine.
3712
+ */
3713
+ kind: 'seller' | 'creative_engine';
3714
+ /**
3715
+ * The id of the seller or creative engine you expect.
3716
+ */
3717
+ id: string;
3718
+ };
3719
+ /**
3720
+ * For kind rfp_turn: where to start the next page of feedback, 20 per page.
3721
+ */
3722
+ feedbackOffset?: number;
3723
+ /**
3724
+ * For kind rfp_turn: where to start the next page of representations, 50 per page. Not with representationCursor.
3725
+ */
3726
+ representationOffset?: number;
3727
+ /**
3728
+ * For kind rfp_turn: the representations cursor from the previous read, which keeps pages stable. Not with representationOffset.
3729
+ */
3730
+ representationCursor?: string;
3731
+ /**
3732
+ * For kind audience: where to start the next page of audiences, 50 per page; default 0.
3733
+ */
3734
+ audienceOffset?: number;
3735
+ /**
3736
+ * For kind proposal with include products: the cursor from the previous products page of the same proposal.
3737
+ */
3738
+ proposalProductsCursor?: string;
3739
+ sourceId?: never;
3508
3740
  }) | (unknown & {
3509
3741
  kind: 'material';
3510
3742
  /**
@@ -3542,7 +3774,7 @@ export type GetData = {
3542
3774
  */
3543
3775
  accountId?: number;
3544
3776
  /**
3545
- * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. For seller, the advertiser to price for with include products, and the advertiser partnerStatus is read for instead of the account.
3777
+ * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. Buyer wholesale_product: the one searched with. For seller, the advertiser to price include products for and read partnerStatus for, instead of the account.
3546
3778
  */
3547
3779
  advertiserId?: string;
3548
3780
  /**
@@ -3780,7 +4012,7 @@ export type GetData = {
3780
4012
  */
3781
4013
  accountId?: number;
3782
4014
  /**
3783
- * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. For seller, the advertiser to price for with include products, and the advertiser partnerStatus is read for instead of the account.
4015
+ * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. Buyer wholesale_product: the one searched with. For seller, the advertiser to price include products for and read partnerStatus for, instead of the account.
3784
4016
  */
3785
4017
  advertiserId?: string;
3786
4018
  /**
@@ -4018,7 +4250,7 @@ export type GetData = {
4018
4250
  */
4019
4251
  accountId?: number;
4020
4252
  /**
4021
- * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. For seller, the advertiser to price for with include products, and the advertiser partnerStatus is read for instead of the account.
4253
+ * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. Buyer wholesale_product: the one searched with. For seller, the advertiser to price include products for and read partnerStatus for, instead of the account.
4022
4254
  */
4023
4255
  advertiserId?: string;
4024
4256
  /**
@@ -4256,7 +4488,7 @@ export type GetData = {
4256
4488
  */
4257
4489
  accountId?: number;
4258
4490
  /**
4259
- * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. For seller, the advertiser to price for with include products, and the advertiser partnerStatus is read for instead of the account.
4491
+ * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. Buyer wholesale_product: the one searched with. For seller, the advertiser to price include products for and read partnerStatus for, instead of the account.
4260
4492
  */
4261
4493
  advertiserId?: string;
4262
4494
  /**
@@ -4494,7 +4726,7 @@ export type GetData = {
4494
4726
  */
4495
4727
  accountId?: number;
4496
4728
  /**
4497
- * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. For seller, the advertiser to price for with include products, and the advertiser partnerStatus is read for instead of the account.
4729
+ * The owning advertiser id. Required for event_source, catalog, creative_format, audience, and property_list (except a report read). creative and creative_collection take this or a campaign sourceId, not both. Buyer wholesale_product: the one searched with. For seller, the advertiser to price include products for and read partnerStatus for, instead of the account.
4498
4730
  */
4499
4731
  advertiserId?: string;
4500
4732
  /**
@@ -6883,9 +7115,39 @@ export type GetStatusResponses = {
6883
7115
  summary: string;
6884
7116
  [key: string]: unknown;
6885
7117
  } | null;
7118
+ /**
7119
+ * Independent facts about the agent; a key that does not apply to its kind is null.
7120
+ */
7121
+ states: {
7122
+ endpointRegistered: boolean | null;
7123
+ storefronts: {
7124
+ total: number;
7125
+ listed: number;
7126
+ private: number;
7127
+ } | null;
7128
+ certified: boolean | null;
7129
+ listedForOtherOrganizations: boolean | null;
7130
+ latestTest: 'passed' | 'failed' | null;
7131
+ credential: {
7132
+ issued: boolean;
7133
+ authenticated: boolean;
7134
+ } | null;
7135
+ };
7136
+ /**
7137
+ * Deprecated: read `states`. Removed after 3 Dec 2026.
7138
+ */
6886
7139
  stage: GetStatusSuccessAgentsResultsItemStage;
7140
+ /**
7141
+ * Deprecated: read `states`. Removed after 3 Dec 2026.
7142
+ */
6887
7143
  finalStage: GetStatusSuccessAgentsResultsItemFinalStage;
7144
+ /**
7145
+ * Deprecated: read `states`. Removed after 3 Dec 2026.
7146
+ */
6888
7147
  nextStage: GetStatusSuccessAgentsResultsItemNextStage | null;
7148
+ /**
7149
+ * Deprecated: the headline finding says what to do next. Removed after 3 Dec 2026.
7150
+ */
6889
7151
  stuckOn: {
6890
7152
  reason: string;
6891
7153
  nextAction: {
@@ -7472,44 +7734,380 @@ export type GetV3PublicMutationReceiptData = {
7472
7734
  export type GetV3PublicMutationReceiptError = GetV3PublicMutationReceiptErrors[keyof GetV3PublicMutationReceiptErrors];
7473
7735
  export type GetV3PublicMutationReceiptErrors = {
7474
7736
  /**
7475
- * Invalid receipt ID
7737
+ * Invalid receipt ID
7738
+ */
7739
+ 400: V3ToolErrorResponse;
7740
+ /**
7741
+ * Unauthenticated
7742
+ */
7743
+ 401: V3ToolErrorResponse;
7744
+ /**
7745
+ * Receipt not found in the authenticated scope
7746
+ */
7747
+ 404: V3ToolErrorResponse;
7748
+ /**
7749
+ * Receipt store unavailable
7750
+ */
7751
+ 503: V3ToolErrorResponse;
7752
+ };
7753
+ export type GetV3PublicMutationReceiptResponse = GetV3PublicMutationReceiptResponses[keyof GetV3PublicMutationReceiptResponses];
7754
+ export type GetV3PublicMutationReceiptResponses = {
7755
+ /**
7756
+ * Receipt state. A pending receipt includes an actionable pendingReason.
7757
+ */
7758
+ 200: {
7759
+ data: {
7760
+ receipt: {
7761
+ id: string;
7762
+ operation: string;
7763
+ state: 'claimed' | 'running' | 'uncertain' | 'succeeded' | 'failed';
7764
+ stateVersion: number;
7765
+ stateChangedAt: string;
7766
+ pendingReason?: string;
7767
+ };
7768
+ };
7769
+ error: null;
7770
+ };
7771
+ };
7772
+ export type InFlightReceipt = ConfirmPaymentAuthorityResponses[202]['data']['receipt'];
7773
+ export type JsonValue = null | boolean | number | string | JsonValue[] | {
7774
+ [key: string]: JsonValue;
7775
+ };
7776
+ export type LogEventData = {
7777
+ body: {
7778
+ /**
7779
+ * Advertiser that owns the event source.
7780
+ */
7781
+ advertiserId: string;
7782
+ /**
7783
+ * Event source registered with save_event_source.
7784
+ */
7785
+ eventSourceId: string;
7786
+ /**
7787
+ * Client-generated key for this call. Same key + same events replays the prior result.
7788
+ */
7789
+ idempotencyKey: string;
7790
+ /**
7791
+ * Marks the call as test traffic.
7792
+ */
7793
+ testEventCode?: string;
7794
+ /**
7795
+ * Up to 10,000 AdCP events. Each event_type + event_id appears once per call; resends across calls are deduplicated.
7796
+ */
7797
+ events: Array<{
7798
+ /**
7799
+ * Unique event ID, scoped to event_type and the event source.
7800
+ */
7801
+ event_id: string;
7802
+ /**
7803
+ * AdCP event type.
7804
+ */
7805
+ event_type: 'page_view' | 'view_content' | 'select_content' | 'select_item' | 'search' | 'share' | 'add_to_cart' | 'remove_from_cart' | 'viewed_cart' | 'add_to_wishlist' | 'initiate_checkout' | 'add_payment_info' | 'purchase' | 'refund' | 'lead' | 'qualify_lead' | 'close_convert_lead' | 'disqualify_lead' | 'complete_registration' | 'subscribe' | 'follow' | 'content_view' | 'watch_milestone' | 'start_trial' | 'app_install' | 'app_launch' | 'contact' | 'schedule' | 'donate' | 'submit_application' | 'custom';
7806
+ /**
7807
+ * When the event happened (ISO 8601).
7808
+ */
7809
+ event_time: string;
7810
+ /**
7811
+ * Identifiers to match the event to a person. Hash email and phone; raw values are refused.
7812
+ */
7813
+ user_match?: {
7814
+ /**
7815
+ * Universal IDs (rampid, id5, uid2, ...).
7816
+ */
7817
+ uids?: Array<{
7818
+ /**
7819
+ * Universal ID type.
7820
+ */
7821
+ type: 'rampid' | 'rampid_derived' | 'id5' | 'uid2' | 'euid' | 'pairid' | 'maid' | 'hashed_email' | 'publisher_first_party' | 'world_id_nullifier' | 'other';
7822
+ /**
7823
+ * Universal ID value.
7824
+ */
7825
+ value: string;
7826
+ [key: string]: unknown;
7827
+ }>;
7828
+ /**
7829
+ * SHA-256 of the lowercased, trimmed email.
7830
+ */
7831
+ hashed_email?: string;
7832
+ /**
7833
+ * SHA-256 of the E.164 phone number.
7834
+ */
7835
+ hashed_phone?: string;
7836
+ /**
7837
+ * Platform click ID (fbclid, gclid, ...).
7838
+ */
7839
+ click_id?: string;
7840
+ /**
7841
+ * Click ID type.
7842
+ */
7843
+ click_id_type?: string;
7844
+ /**
7845
+ * Client IP address.
7846
+ */
7847
+ client_ip?: string;
7848
+ /**
7849
+ * Client user agent.
7850
+ */
7851
+ client_user_agent?: string;
7852
+ /**
7853
+ * AdCP extension object.
7854
+ */
7855
+ ext?: LogEventRequestEventsItemUserMatchExt;
7856
+ [key: string]: unknown;
7857
+ };
7858
+ /**
7859
+ * Event data: value, currency, and items.
7860
+ */
7861
+ custom_data?: {
7862
+ /**
7863
+ * Monetary value, not negative.
7864
+ */
7865
+ value?: number;
7866
+ /**
7867
+ * ISO 4217 currency code.
7868
+ */
7869
+ currency?: string;
7870
+ /**
7871
+ * Order or transaction ID.
7872
+ */
7873
+ order_id?: string;
7874
+ /**
7875
+ * Product or content IDs.
7876
+ */
7877
+ content_ids?: Array<string>;
7878
+ /**
7879
+ * Content type, e.g. product.
7880
+ */
7881
+ content_type?: string;
7882
+ /**
7883
+ * Content name.
7884
+ */
7885
+ content_name?: string;
7886
+ /**
7887
+ * Content category.
7888
+ */
7889
+ content_category?: string;
7890
+ /**
7891
+ * Number of items.
7892
+ */
7893
+ num_items?: number;
7894
+ /**
7895
+ * Search query.
7896
+ */
7897
+ search_string?: string;
7898
+ /**
7899
+ * Watch progress, 0 to 100.
7900
+ */
7901
+ progress_percent?: number;
7902
+ /**
7903
+ * Watch progress in seconds.
7904
+ */
7905
+ progress_seconds?: number;
7906
+ /**
7907
+ * Per-item details.
7908
+ */
7909
+ contents?: Array<{
7910
+ /**
7911
+ * Item ID.
7912
+ */
7913
+ id: string;
7914
+ /**
7915
+ * Quantity, at least 1.
7916
+ */
7917
+ quantity?: number;
7918
+ /**
7919
+ * Unit price, not negative.
7920
+ */
7921
+ price?: number;
7922
+ /**
7923
+ * Brand.
7924
+ */
7925
+ brand?: string;
7926
+ [key: string]: unknown;
7927
+ }>;
7928
+ /**
7929
+ * AdCP extension object.
7930
+ */
7931
+ ext?: LogEventRequestEventsItemCustomDataExt;
7932
+ [key: string]: unknown;
7933
+ };
7934
+ /**
7935
+ * Where the event happened.
7936
+ */
7937
+ action_source?: 'website' | 'app' | 'offline' | 'phone_call' | 'chat' | 'email' | 'in_store' | 'system_generated' | 'other';
7938
+ /**
7939
+ * AdCP surface, when action_source is too coarse.
7940
+ */
7941
+ surface?: {
7942
+ /**
7943
+ * Generic surface category; owned_property = durable creator/brand property (channel, feed, etc).
7944
+ */
7945
+ category: 'owned_property' | 'website' | 'app' | 'offline' | 'phone_call' | 'chat' | 'email' | 'in_store' | 'system_generated' | 'other';
7946
+ /**
7947
+ * Open vocabulary for the property kind, e.g. channel, profile, feed, podcast, playlist, newsletter.
7948
+ */
7949
+ property_type?: string;
7950
+ /**
7951
+ * Platform, publisher, or system namespace for the property, e.g. video_platform, audio_service.
7952
+ */
7953
+ namespace?: string;
7954
+ /**
7955
+ * Identifier for the property within namespace.
7956
+ */
7957
+ property_id?: string;
7958
+ /**
7959
+ * AdCP extension object, namespaced by vendor key.
7960
+ */
7961
+ ext?: LogEventRequestEventsItemSurfaceExt;
7962
+ [key: string]: unknown;
7963
+ };
7964
+ /**
7965
+ * URL where the event happened.
7966
+ */
7967
+ event_source_url?: string;
7968
+ /**
7969
+ * Name of a custom event.
7970
+ */
7971
+ custom_event_name?: string;
7972
+ /**
7973
+ * AdCP extension object.
7974
+ */
7975
+ ext?: LogEventRequestEventsItemExt;
7976
+ [key: string]: unknown;
7977
+ }>;
7978
+ /**
7979
+ * Apostra accountId you are working in (from get_status). The write fails if the account has changed.
7980
+ */
7981
+ expectedAccountId?: number | string;
7982
+ /**
7983
+ * Apostra accountId this call runs in, from get_status.
7984
+ */
7985
+ accountId?: number | string;
7986
+ };
7987
+ headers: {
7988
+ /**
7989
+ * Select an accessible customer account for this request. An explicit value must be a positive integer and must equal the account resolved by authentication.
7990
+ */
7991
+ 'X-SCOPE3-CUSTOMER-ID'?: string;
7992
+ /**
7993
+ * Required for every write. Reuse the same key and validated body to replay the durable result for seven days. If this operation also accepts idempotencyKey in its JSON body, the values must match.
7994
+ */
7995
+ 'Idempotency-Key': string;
7996
+ };
7997
+ path?: never;
7998
+ query?: never;
7999
+ url: '/tools/log_event';
8000
+ };
8001
+ export type LogEventError = LogEventErrors[keyof LogEventErrors];
8002
+ export type LogEventErrors = {
8003
+ /**
8004
+ * Invalid operation input
8005
+ */
8006
+ 400: V3ToolErrorResponse;
8007
+ /**
8008
+ * Missing or invalid API credential
8009
+ */
8010
+ 401: V3ToolErrorResponse;
8011
+ /**
8012
+ * Account credit limit exceeded
8013
+ */
8014
+ 402: V3ToolErrorResponse;
8015
+ /**
8016
+ * The credential or account cannot perform this operation
8017
+ */
8018
+ 403: V3ToolErrorResponse;
8019
+ /**
8020
+ * Requested resource not found
7476
8021
  */
7477
- 400: V3ToolErrorResponse;
8022
+ 404: V3ToolErrorResponse;
7478
8023
  /**
7479
- * Unauthenticated
8024
+ * Operation conflicts with current resource state
7480
8025
  */
7481
- 401: V3ToolErrorResponse;
8026
+ 409: V3ToolErrorResponse;
7482
8027
  /**
7483
- * Receipt not found in the authenticated scope
8028
+ * Request body exceeds the accepted size
7484
8029
  */
7485
- 404: V3ToolErrorResponse;
8030
+ 413: V3ToolErrorResponse;
7486
8031
  /**
7487
- * Receipt store unavailable
8032
+ * Request body encoding or character set is unsupported
8033
+ */
8034
+ 415: V3ToolErrorResponse;
8035
+ /**
8036
+ * Operation cannot process the supplied input
8037
+ */
8038
+ 422: V3ToolErrorResponse;
8039
+ /**
8040
+ * Request rate limit exceeded
8041
+ */
8042
+ 429: V3ToolErrorResponse;
8043
+ /**
8044
+ * Unexpected operation failure
8045
+ */
8046
+ 500: V3ToolErrorResponse;
8047
+ /**
8048
+ * Recognised operation behaviour is not implemented
8049
+ */
8050
+ 501: V3ToolErrorResponse;
8051
+ /**
8052
+ * The write could not be durably claimed before dispatch, so it is safe to retry with the same key
7488
8053
  */
7489
8054
  503: V3ToolErrorResponse;
7490
8055
  };
7491
- export type GetV3PublicMutationReceiptResponse = GetV3PublicMutationReceiptResponses[keyof GetV3PublicMutationReceiptResponses];
7492
- export type GetV3PublicMutationReceiptResponses = {
8056
+ export type LogEventRequestEventsItemCustomDataExt = {
8057
+ [key: string]: unknown;
8058
+ };
8059
+ export type LogEventRequestEventsItemExt = {
8060
+ [key: string]: unknown;
8061
+ };
8062
+ export type LogEventRequestEventsItemSurfaceExt = {
8063
+ [key: string]: unknown;
8064
+ };
8065
+ export type LogEventRequestEventsItemUserMatchExt = {
8066
+ [key: string]: unknown;
8067
+ };
8068
+ export type LogEventResponse = LogEventResponses[keyof LogEventResponses];
8069
+ export type LogEventResponses = {
7493
8070
  /**
7494
- * Receipt state. A pending receipt includes an actionable pendingReason.
8071
+ * Typed operation result
7495
8072
  */
7496
8073
  200: {
8074
+ data: {
8075
+ advertiserId: string;
8076
+ eventSourceId: string;
8077
+ replayed: boolean;
8078
+ ingestion: LogEventSuccessLogEventIngestion;
8079
+ };
8080
+ error: null;
8081
+ };
8082
+ /**
8083
+ * The write is still running or needs recovery. Retry this operation with the same Idempotency-Key and body; do not mint a new key.
8084
+ */
8085
+ 202: {
7497
8086
  data: {
7498
8087
  receipt: {
7499
8088
  id: string;
7500
8089
  operation: string;
7501
- state: 'claimed' | 'running' | 'uncertain' | 'succeeded' | 'failed';
8090
+ state: 'claimed' | 'running' | 'uncertain';
7502
8091
  stateVersion: number;
7503
8092
  stateChangedAt: string;
7504
- pendingReason?: string;
8093
+ pendingReason: string;
7505
8094
  };
7506
8095
  };
7507
8096
  error: null;
7508
8097
  };
7509
8098
  };
7510
- export type InFlightReceipt = ConfirmPaymentAuthorityResponses[202]['data']['receipt'];
7511
- export type JsonValue = null | boolean | number | string | JsonValue[] | {
7512
- [key: string]: JsonValue;
8099
+ export type LogEventSuccessLogEventIngestion = {
8100
+ events_received: number;
8101
+ events_processed: number;
8102
+ partial_failures?: Array<{
8103
+ event_id: string;
8104
+ code: string;
8105
+ message: string;
8106
+ [key: string]: unknown;
8107
+ }>;
8108
+ warnings?: Array<string>;
8109
+ match_quality?: number;
8110
+ [key: string]: unknown;
7513
8111
  };
7514
8112
  export type OpenAdvertisersPageData = {
7515
8113
  body: {
@@ -8580,7 +9178,7 @@ export type OpenCampaignsPageSuccessPageHumanHandoffRequired = {
8580
9178
  instruction: 'Show the account and action. Open only at the user’s request; otherwise return the URL. Do not log or post this link publicly.';
8581
9179
  };
8582
9180
  page: {
8583
- resourceUri: 'ui://agentic-api/conversation-history/mcp-app.html' | 'ui://agentic-api/agent-v2/mcp-app.html' | 'ui://agentic-api/developer-home/mcp-app.html' | 'ui://agentic-api/agents/mcp-app.html' | 'ui://agentic-api/create-agent/mcp-app.html' | 'ui://agentic-api/claim-agent/mcp-app.html' | 'ui://agentic-api/configure-agent-connection/mcp-app.html' | 'ui://agentic-api/register-agent-observed-revision/mcp-app.html' | 'ui://agentic-api/buyer-account-admission/mcp-app.html' | 'ui://agentic-api/tars-org-supply-asks/mcp-app.html' | 'ui://agentic-api/tars-run-rate/mcp-app.html' | 'ui://agentic-api/tars-marketing-email-library/mcp-app.html' | 'ui://agentic-api/tars-approved-deck-modules/mcp-app.html' | 'ui://agentic-api/tars-marketing-email-operations/mcp-app.html' | 'ui://agentic-api/business-rules/mcp-app.html' | 'ui://agentic-api/demo-storefront/mcp-app.html' | 'ui://agentic-api/modular-inventory-source/mcp-app.html' | 'ui://agentic-api/modular-connect/mcp-app.html' | 'ui://agentic-api/source-discovery-preview/mcp-app.html' | 'ui://agentic-api/partner-connection/mcp-app.html' | 'ui://agentic-api/agent-certification/mcp-app.html' | 'ui://agentic-api/agent-sources/mcp-app.html' | 'ui://agentic-api/agent-overview/mcp-app.html' | 'ui://agentic-api/agent-webhooks/mcp-app.html' | 'ui://agentic-api/modular-avails-commit/mcp-app.html' | 'ui://agentic-api/plan-billing/mcp-app.html' | 'ui://agentic-api/connections/mcp-app.html' | 'ui://agentic-api/creative-engines/mcp-app.html' | 'ui://agentic-api/all-advertisers-home/mcp-app.html' | 'ui://agentic-api/add-advertiser/mcp-app.html' | 'ui://agentic-api/campaigns/mcp-app.html' | 'ui://agentic-api/creative-library-v3-assets-v1/mcp-app.html' | 'ui://agentic-api/creative-library-v3/mcp-app.html' | 'ui://agentic-api/upload-creative-asset/mcp-app.html' | 'ui://agentic-api/creative-composer-task/mcp-app.html' | 'ui://agentic-api/variant-gallery/mcp-app.html' | 'ui://agentic-api/seller-setup/mcp-app.html' | 'ui://agentic-api/approvals/mcp-app.html' | 'ui://agentic-api/notifications/mcp-app.html' | 'ui://agentic-api/buyer-notifications/mcp-app.html' | 'ui://agentic-api/buyer-webhooks/mcp-app.html' | 'ui://agentic-api/proposal-pass-v3/mcp-app.html' | 'ui://agentic-api/sessions/mcp-app.html' | 'ui://agentic-api/seller-dashboard/mcp-app.html' | 'ui://agentic-api/seller-dashboard-v3/mcp-app.html' | 'ui://agentic-api/product-marketing-v3/mcp-app.html' | 'ui://agentic-api/library/mcp-app.html' | 'ui://agentic-api/integrations/mcp-app.html' | 'ui://agentic-api/release-notes/mcp-app.html' | 'ui://agentic-api/playbook/mcp-app.html' | 'ui://agentic-api/media-kit/mcp-app.html' | 'ui://agentic-api/business-profile/mcp-app.html' | 'ui://agentic-api/buyer-discounts/mcp-app.html' | 'ui://agentic-api/sponsored-buyers/mcp-app.html' | 'ui://agentic-api/pending-operations/mcp-app.html' | 'ui://agentic-api/storefront-briefs/mcp-app.html' | 'ui://agentic-api/merchandising-simulator/mcp-app.html' | 'ui://agentic-api/media-buys/mcp-app.html' | 'ui://agentic-api/media-buy-timeline/mcp-app.html' | 'ui://agentic-api/components/mcp-app.html' | 'ui://agentic-api/seller-accounts/mcp-app.html';
9181
+ resourceUri: 'ui://agentic-api/conversation-history/mcp-app.html' | 'ui://agentic-api/agent-v2/mcp-app.html' | 'ui://agentic-api/developer-home/mcp-app.html' | 'ui://agentic-api/agents/mcp-app.html' | 'ui://agentic-api/create-agent/mcp-app.html' | 'ui://agentic-api/claim-agent/mcp-app.html' | 'ui://agentic-api/configure-agent-connection/mcp-app.html' | 'ui://agentic-api/register-agent-observed-revision/mcp-app.html' | 'ui://agentic-api/buyer-account-admission/mcp-app.html' | 'ui://agentic-api/tars-org-supply-asks/mcp-app.html' | 'ui://agentic-api/tars-run-rate/mcp-app.html' | 'ui://agentic-api/tars-marketing-email-library/mcp-app.html' | 'ui://agentic-api/tars-approved-deck-modules/mcp-app.html' | 'ui://agentic-api/tars-marketing-email-operations/mcp-app.html' | 'ui://agentic-api/business-rules/mcp-app.html' | 'ui://agentic-api/demo-storefront/mcp-app.html' | 'ui://agentic-api/agent-source-credentials/mcp-app.html' | 'ui://agentic-api/property-roster/mcp-app.html' | 'ui://agentic-api/seller-account-feed/mcp-app.html' | 'ui://agentic-api/media-buy-retry/mcp-app.html' | 'ui://agentic-api/modular-inventory-source/mcp-app.html' | 'ui://agentic-api/modular-connect/mcp-app.html' | 'ui://agentic-api/source-discovery-preview/mcp-app.html' | 'ui://agentic-api/partner-connection/mcp-app.html' | 'ui://agentic-api/agent-certification/mcp-app.html' | 'ui://agentic-api/agent-sources/mcp-app.html' | 'ui://agentic-api/agent-overview/mcp-app.html' | 'ui://agentic-api/agent-webhooks/mcp-app.html' | 'ui://agentic-api/modular-avails-commit/mcp-app.html' | 'ui://agentic-api/plan-billing/mcp-app.html' | 'ui://agentic-api/connections/mcp-app.html' | 'ui://agentic-api/creative-engines/mcp-app.html' | 'ui://agentic-api/all-advertisers-home/mcp-app.html' | 'ui://agentic-api/add-advertiser/mcp-app.html' | 'ui://agentic-api/campaigns/mcp-app.html' | 'ui://agentic-api/creative-library-v3-assets-v1/mcp-app.html' | 'ui://agentic-api/creative-library-v3/mcp-app.html' | 'ui://agentic-api/upload-creative-asset/mcp-app.html' | 'ui://agentic-api/creative-composer-task/mcp-app.html' | 'ui://agentic-api/variant-gallery/mcp-app.html' | 'ui://agentic-api/seller-setup/mcp-app.html' | 'ui://agentic-api/approvals/mcp-app.html' | 'ui://agentic-api/notifications/mcp-app.html' | 'ui://agentic-api/buyer-notifications/mcp-app.html' | 'ui://agentic-api/buyer-webhooks/mcp-app.html' | 'ui://agentic-api/proposal-pass-v3/mcp-app.html' | 'ui://agentic-api/sessions/mcp-app.html' | 'ui://agentic-api/seller-dashboard/mcp-app.html' | 'ui://agentic-api/seller-dashboard-v3/mcp-app.html' | 'ui://agentic-api/product-marketing-v3/mcp-app.html' | 'ui://agentic-api/library/mcp-app.html' | 'ui://agentic-api/integrations/mcp-app.html' | 'ui://agentic-api/release-notes/mcp-app.html' | 'ui://agentic-api/playbook/mcp-app.html' | 'ui://agentic-api/media-kit/mcp-app.html' | 'ui://agentic-api/business-profile/mcp-app.html' | 'ui://agentic-api/buyer-discounts/mcp-app.html' | 'ui://agentic-api/sponsored-buyers/mcp-app.html' | 'ui://agentic-api/pending-operations/mcp-app.html' | 'ui://agentic-api/storefront-briefs/mcp-app.html' | 'ui://agentic-api/activity-log/mcp-app.html' | 'ui://agentic-api/merchandising-simulator/mcp-app.html' | 'ui://agentic-api/media-buys/mcp-app.html' | 'ui://agentic-api/media-buy-timeline/mcp-app.html' | 'ui://agentic-api/components/mcp-app.html' | 'ui://agentic-api/seller-accounts/mcp-app.html';
8584
9182
  advertiserId?: string;
8585
9183
  campaignId?: string;
8586
9184
  capability: 'reauthenticate_in_browser' | 'manage_webhooks';
@@ -9358,7 +9956,7 @@ export type OpenPageData = {
9358
9956
  /**
9359
9957
  * Page to open. Owners repair a missing Agent relationship in source_diagnostics.
9360
9958
  */
9361
- page: 'connect_ad_server' | 'ad_server_source' | 'ad_server_diagnostics' | 'source_diagnostics' | 'seller_setup' | 'demo_seller' | 'modular_inventory_source' | 'modular_source_setup' | 'modular_inventory_feed' | 'listing' | 'discovery_card' | 'media_kit' | 'business_profile' | 'playbook' | 'library' | 'integrations' | 'product_marketing' | 'business_rules' | 'buyer_account_mapping' | 'property_roster' | 'plan_and_billing' | 'buyer_setup' | 'sellers' | 'creative_engines' | 'advertisers' | 'campaigns' | 'campaign_receipt' | 'approvals' | 'release_notes' | 'customer_requests' | 'notifications' | 'webhooks' | 'buyer_proposal_version';
9959
+ page: 'connect_ad_server' | 'ad_server_source' | 'ad_server_diagnostics' | 'source_diagnostics' | 'seller_setup' | 'demo_seller' | 'connect_sales_agent' | 'modular_inventory_source' | 'modular_source_setup' | 'modular_inventory_feed' | 'listing' | 'discovery_card' | 'media_kit' | 'business_profile' | 'playbook' | 'library' | 'integrations' | 'product_marketing' | 'business_rules' | 'buyer_account_mapping' | 'property_roster' | 'plan_and_billing' | 'buyer_setup' | 'sellers' | 'creative_engines' | 'advertisers' | 'campaigns' | 'campaign_receipt' | 'approvals' | 'release_notes' | 'customer_requests' | 'notifications' | 'webhooks' | 'buyer_proposal_version';
9362
9960
  /**
9363
9961
  * Focus diagnostics, modular source, or modular feed pages on an inventory source returned by search.
9364
9962
  */
@@ -12950,7 +13548,7 @@ export type SaveBillingData = {
12950
13548
  */
12951
13549
  paymentTerms?: 'net_15' | 'net_30' | 'net_45' | 'net_60' | 'net_90';
12952
13550
  /**
12953
- * Accept or switch plans. Send alone.
13551
+ * Accept or switch plans; returns approval_required. Send alone.
12954
13552
  */
12955
13553
  plan?: SaveBillingRequestSaveBillingPlan;
12956
13554
  /**
@@ -13083,7 +13681,7 @@ export type SaveBillingRequestSaveBillingPlan = {
13083
13681
  */
13084
13682
  paymentOptionKey?: string;
13085
13683
  /**
13086
- * Stable key; repeat it to retry.
13684
+ * Stable key; repeat it with the same plan to read the approval outcome.
13087
13685
  */
13088
13686
  idempotencyKey: string;
13089
13687
  };
@@ -13123,33 +13721,16 @@ export type SaveBillingResponses = {
13123
13721
  accepted: true;
13124
13722
  acceptedVersion: string;
13125
13723
  };
13126
- paymentTerms?: never;
13127
- paymentTermsChosen?: never;
13128
- paymentAuthority?: never;
13129
- plan?: never;
13130
- offerResponse?: never;
13131
- renewal?: never;
13132
13724
  } | {
13133
13725
  action: 'terms_not_required';
13134
13726
  terms: {
13135
13727
  accepted: false;
13136
13728
  governedByExistingContract: true;
13137
13729
  };
13138
- paymentTerms?: never;
13139
- paymentTermsChosen?: never;
13140
- paymentAuthority?: never;
13141
- plan?: never;
13142
- offerResponse?: never;
13143
- renewal?: never;
13144
13730
  } | {
13145
13731
  action: 'payment_terms_saved';
13146
13732
  paymentTerms: SaveBillingSuccessPaymentTerms;
13147
13733
  paymentTermsChosen: true;
13148
- terms?: never;
13149
- paymentAuthority?: never;
13150
- plan?: never;
13151
- offerResponse?: never;
13152
- renewal?: never;
13153
13734
  } | {
13154
13735
  action: 'billing_saved';
13155
13736
  terms: {
@@ -13163,64 +13744,24 @@ export type SaveBillingResponses = {
13163
13744
  };
13164
13745
  paymentTerms: SaveBillingSuccessPaymentTerms;
13165
13746
  paymentTermsChosen: true;
13166
- paymentAuthority?: never;
13167
- plan?: never;
13168
- offerResponse?: never;
13169
- renewal?: never;
13170
13747
  } | {
13171
13748
  paymentAuthority: SaveBillingSuccessPendingConfirmationResult;
13172
13749
  action: 'confirmation_required';
13173
- terms?: never;
13174
- paymentTerms?: never;
13175
- paymentTermsChosen?: never;
13176
- plan?: never;
13177
- offerResponse?: never;
13178
- renewal?: never;
13179
13750
  } | {
13180
13751
  paymentAuthority: SaveBillingSuccessCaptureLinkIssuedResult;
13181
13752
  action: 'human_action_required';
13182
- terms?: never;
13183
- paymentTerms?: never;
13184
- paymentTermsChosen?: never;
13185
- plan?: never;
13186
- offerResponse?: never;
13187
- renewal?: never;
13188
13753
  } | {
13189
13754
  paymentAuthority: SaveBillingSuccessCaptureLinkIssuedResult;
13190
13755
  action: 'payment_authority_pending';
13191
- terms?: never;
13192
- paymentTerms?: never;
13193
- paymentTermsChosen?: never;
13194
- plan?: never;
13195
- offerResponse?: never;
13196
- renewal?: never;
13197
13756
  } | {
13198
13757
  paymentAuthority: SaveBillingSuccessCaptureLinkIssuedResult;
13199
13758
  action: 'payment_authority_opened';
13200
- terms?: never;
13201
- paymentTerms?: never;
13202
- paymentTermsChosen?: never;
13203
- plan?: never;
13204
- offerResponse?: never;
13205
- renewal?: never;
13206
13759
  } | {
13207
13760
  paymentAuthority: SaveBillingSuccessCaptureLinkIssuedResult;
13208
13761
  action: 'payment_authority_verified';
13209
- terms?: never;
13210
- paymentTerms?: never;
13211
- paymentTermsChosen?: never;
13212
- plan?: never;
13213
- offerResponse?: never;
13214
- renewal?: never;
13215
13762
  } | {
13216
13763
  paymentAuthority: SaveBillingSuccessCaptureLinkIssuedResult;
13217
13764
  action: 'payment_authority_expired';
13218
- terms?: never;
13219
- paymentTerms?: never;
13220
- paymentTermsChosen?: never;
13221
- plan?: never;
13222
- offerResponse?: never;
13223
- renewal?: never;
13224
13765
  } | {
13225
13766
  action: 'plan_accepted';
13226
13767
  plan: {
@@ -13232,24 +13773,12 @@ export type SaveBillingResponses = {
13232
13773
  termStart: string;
13233
13774
  termEnd: string;
13234
13775
  };
13235
- terms?: never;
13236
- paymentTerms?: never;
13237
- paymentTermsChosen?: never;
13238
- paymentAuthority?: never;
13239
- offerResponse?: never;
13240
- renewal?: never;
13241
- } | {
13776
+ } | SaveBillingSuccessAgentApprovalRequired | {
13242
13777
  action: 'offer_response_recorded';
13243
13778
  offerResponse: {
13244
13779
  eventId: string;
13245
13780
  outcome: 'DECLINED' | 'DEFERRED';
13246
13781
  };
13247
- terms?: never;
13248
- paymentTerms?: never;
13249
- paymentTermsChosen?: never;
13250
- paymentAuthority?: never;
13251
- plan?: never;
13252
- renewal?: never;
13253
13782
  } | {
13254
13783
  action: 'renewal_changed';
13255
13784
  renewal: {
@@ -13258,12 +13787,6 @@ export type SaveBillingResponses = {
13258
13787
  effectiveAt: string;
13259
13788
  changeCutoffAt: string;
13260
13789
  };
13261
- terms?: never;
13262
- paymentTerms?: never;
13263
- paymentTermsChosen?: never;
13264
- paymentAuthority?: never;
13265
- plan?: never;
13266
- offerResponse?: never;
13267
13790
  };
13268
13791
  error: null;
13269
13792
  };
@@ -13284,6 +13807,55 @@ export type SaveBillingResponses = {
13284
13807
  error: null;
13285
13808
  };
13286
13809
  };
13810
+ export type SaveBillingSuccessAgentApproval = {
13811
+ /**
13812
+ * Approval id.
13813
+ */
13814
+ id: string;
13815
+ /**
13816
+ * Kind of sensitive action, for example `buyer_child_account.create`.
13817
+ */
13818
+ kind: string;
13819
+ /**
13820
+ * `pending` waits for a person; `executing` was approved and is running; `succeeded`, `failed`, `rejected` and `expired` are final.
13821
+ */
13822
+ state: 'pending' | 'executing' | 'succeeded' | 'failed' | 'rejected' | 'expired';
13823
+ /**
13824
+ * Account the action applies to.
13825
+ */
13826
+ targetCustomerId: string;
13827
+ /**
13828
+ * Role the approver must hold on the account.
13829
+ */
13830
+ requiredRole: 'ADMIN' | 'SUPER_ADMIN' | null;
13831
+ /**
13832
+ * What will happen, in one line. Null once the approval is final.
13833
+ */
13834
+ summary: string | null;
13835
+ /**
13836
+ * Page on our site where a signed-in person approves or rejects the request.
13837
+ */
13838
+ url: string;
13839
+ createdAt: string;
13840
+ expiresAt: string;
13841
+ decidedAt: string | null;
13842
+ completedAt: string | null;
13843
+ /**
13844
+ * Reference to the result once succeeded.
13845
+ */
13846
+ resultReference: {
13847
+ [key: string]: string | number | boolean;
13848
+ } | null;
13849
+ /**
13850
+ * Reason code when the action failed.
13851
+ */
13852
+ failureCode: string | null;
13853
+ };
13854
+ export type SaveBillingSuccessAgentApprovalRequired = {
13855
+ action: 'approval_required';
13856
+ message: string;
13857
+ approval: SaveBillingSuccessAgentApproval;
13858
+ };
13287
13859
  export type SaveBillingSuccessCaptureLinkIssuedResult = {
13288
13860
  /**
13289
13861
  * How the payment authority is captured. `capture_link` (the only value today): a hosted link for the org's human cardholder to open. Future methods (e.g. an agent-held payment token) will be additive values — switch on this field rather than assuming it.
@@ -13349,12 +13921,16 @@ export type SaveBusinessRulesData = {
13349
13921
  * auto skips the create evaluator and human queue; manual evaluates and queues exceptions.
13350
13922
  */
13351
13923
  mediaBuyApproval?: 'auto' | 'manual';
13924
+ /**
13925
+ * Guaranteed buys over the ad server forecast: send anyway, or hold for review.
13926
+ */
13927
+ guaranteedOverForecast?: 'overbook' | 'hold_for_review';
13352
13928
  /**
13353
13929
  * Required to move either approval to auto. Confirms nobody will review those.
13354
13930
  */
13355
13931
  acknowledgeNoHumanReview?: boolean;
13356
13932
  /**
13357
- * Policy sections to show buyers on the listing. Empty hides them.
13933
+ * Policy sections to show buyers on the listing. Empty hides them. Rejection reasons may still quote the rule a creative broke.
13358
13934
  */
13359
13935
  advertisingPolicyDisclosure?: Array<'brief_acceptance' | 'creative_policy'>;
13360
13936
  /**
@@ -14092,6 +14668,23 @@ export type SaveCampaignData = {
14092
14668
  */
14093
14669
  pacing?: 'even' | 'asap' | 'front_loaded';
14094
14670
  };
14671
+ /**
14672
+ * Operator's fee on the campaign, AdCP adjustment fields: [{name: 'operator_fee', rate: 0.02}] is 2% of gross budget, up to 0.49. [] clears. Only the operator organisation, when enabled; needs a budget. New media buys lock it.
14673
+ */
14674
+ operatorFees?: Array<{
14675
+ /**
14676
+ * The kind of fee. Always `operator_fee`.
14677
+ */
14678
+ name: string;
14679
+ /**
14680
+ * Decimal share of the campaign's gross budget: 0.02 for 2%.
14681
+ */
14682
+ rate: number;
14683
+ /**
14684
+ * Account id of the operator organisation; must be the account's parent organisation, the default.
14685
+ */
14686
+ beneficiary?: string;
14687
+ }>;
14095
14688
  /**
14096
14689
  * Per-seller AdCP 3.2 MediaBuy cap. Null clears it; draft only. Other levels are unavailable.
14097
14690
  */
@@ -15617,7 +16210,8 @@ export type SaveCampaignResponses = {
15617
16210
  mediaBuys: Array<{
15618
16211
  mediaBuyId: string;
15619
16212
  name: string;
15620
- phase: 'draft';
16213
+ phase: 'draft' | 'pendingApproval' | 'active';
16214
+ willStart?: boolean;
15621
16215
  budget?: SaveCampaignSuccessLaunchMediaBuysItemBudget;
15622
16216
  sellerName?: string;
15623
16217
  }>;
@@ -16998,6 +17592,117 @@ export type SaveCreativeData = {
16998
17592
  * Campaign scope for create or update; required unless advertiserId is set. A draft records its intended campaign.
16999
17593
  */
17000
17594
  campaignId?: string;
17595
+ /**
17596
+ * Read-only bulk-update preview: selects up to 200 Creatives and returns a 15-minute token.
17597
+ */
17598
+ previewBulkUpdate?: {
17599
+ /**
17600
+ * Creative-selection predicates; all supplied predicates intersect.
17601
+ */
17602
+ selection: {
17603
+ /**
17604
+ * Creative IDs to intersect with the other selectors.
17605
+ */
17606
+ creativeIds?: Array<string>;
17607
+ /**
17608
+ * Collection whose Creatives must be selected.
17609
+ */
17610
+ collectionId?: string;
17611
+ /**
17612
+ * Case-insensitive Creative-name substring to match.
17613
+ */
17614
+ nameContains?: string;
17615
+ /**
17616
+ * Select Creatives created after this timestamp.
17617
+ */
17618
+ createdAfter?: string;
17619
+ /**
17620
+ * Select Creatives created before this timestamp.
17621
+ */
17622
+ createdBefore?: string;
17623
+ /**
17624
+ * Select Creatives updated after this timestamp.
17625
+ */
17626
+ updatedAfter?: string;
17627
+ /**
17628
+ * Select Creatives updated before this timestamp.
17629
+ */
17630
+ updatedBefore?: string;
17631
+ /**
17632
+ * Canonical format kind to match.
17633
+ */
17634
+ formatKind?: SaveCreativeRequestPreviewBulkUpdateSelectionFormatKind;
17635
+ /**
17636
+ * Creative asset type to match.
17637
+ */
17638
+ assetType?: 'IMAGE' | 'VIDEO' | 'AUDIO' | 'HTML' | 'TEXT' | 'VAST';
17639
+ };
17640
+ /**
17641
+ * Fields to change on every selected Creative.
17642
+ */
17643
+ update: {
17644
+ /**
17645
+ * Replacement click-through URL for every selected Creative.
17646
+ */
17647
+ clickUrl?: SaveCreativeRequestPreviewBulkUpdateUpdateClickUrl;
17648
+ /**
17649
+ * Replacement canonical format kind for every selected Creative.
17650
+ */
17651
+ formatKind?: SaveCreativeRequestPreviewBulkUpdateUpdateFormatKind;
17652
+ /**
17653
+ * Parameters for the replacement canonical format.
17654
+ */
17655
+ formatParams?: SaveCreativeRequestPreviewBulkUpdateUpdateFormatParams;
17656
+ /**
17657
+ * Publisher or product canonical format option to apply.
17658
+ */
17659
+ formatOptionRef?: {
17660
+ /**
17661
+ * Resolve the format option from a publisher catalog.
17662
+ */
17663
+ scope: 'publisher';
17664
+ /**
17665
+ * Publisher domain that owns the catalog option.
17666
+ */
17667
+ publisher_domain: string;
17668
+ /**
17669
+ * Canonical format option ID from the publisher catalog.
17670
+ */
17671
+ format_option_id: string;
17672
+ } | {
17673
+ /**
17674
+ * Resolve the format option from the selected product.
17675
+ */
17676
+ scope: 'product';
17677
+ /**
17678
+ * Canonical format option ID declared by the product.
17679
+ */
17680
+ format_option_id: string;
17681
+ publisher_domain?: never;
17682
+ };
17683
+ };
17684
+ /**
17685
+ * Selected Creative IDs to remove from the final batch.
17686
+ */
17687
+ excludeCreativeIds?: Array<string>;
17688
+ /**
17689
+ * Fixed maximum number of Creatives allowed in one batch.
17690
+ */
17691
+ limit?: 200;
17692
+ };
17693
+ /**
17694
+ * Apply the exact preview atomically; idempotencyKey is required alongside this field.
17695
+ */
17696
+ applyBulkUpdate?: {
17697
+ /**
17698
+ * Server-issued bulk preview token, valid for 15 minutes.
17699
+ */
17700
+ previewToken: string;
17701
+ /**
17702
+ * Digest returned by the exact preview being applied.
17703
+ */
17704
+ selectionDigest: string;
17705
+ };
17001
17706
  /**
17002
17707
  * Replace campaign membership; omit to keep it.
17003
17708
  */
@@ -17025,13 +17730,11 @@ export type SaveCreativeData = {
17025
17730
  /**
17026
17731
  * Canonical format for a draft or advertiser-level metadata update.
17027
17732
  */
17028
- formatKind?: 'image' | 'html5' | 'display_tag' | 'image_carousel' | 'video_hosted' | 'video_vast' | 'audio_hosted' | 'audio_vast' | 'audio_daast' | 'sponsored_placement' | 'native_in_feed' | 'responsive_creative' | 'agent_placement' | 'seller_rendered_stateful_display' | 'coordinated_placements' | 'custom';
17733
+ formatKind?: SaveCreativeRequestFormatKind;
17029
17734
  /**
17030
17735
  * Docs: Format parameters.
17031
17736
  */
17032
- formatParams?: {
17033
- [key: string]: unknown;
17034
- };
17737
+ formatParams?: SaveCreativeRequestFormatParams;
17035
17738
  /**
17036
17739
  * Canonical format option; derived from creativeFormatId when supplied.
17037
17740
  */
@@ -17378,10 +18081,23 @@ export type SaveCreativeErrors = {
17378
18081
  export type SaveCreativeRequestAssetsItemUrl = string;
17379
18082
  export type SaveCreativeRequestClickUrl = SaveCreativeRequestLandingPageUrl;
17380
18083
  export type SaveCreativeRequestDisplayTagUrl = string;
18084
+ export type SaveCreativeRequestFormatKind = 'image' | 'html5' | 'display_tag' | 'image_carousel' | 'video_hosted' | 'video_vast' | 'audio_hosted' | 'audio_vast' | 'audio_daast' | 'sponsored_placement' | 'native_in_feed' | 'responsive_creative' | 'agent_placement' | 'seller_rendered_stateful_display' | 'coordinated_placements' | 'custom';
18085
+ export type SaveCreativeRequestFormatParams = {
18086
+ [key: string]: unknown;
18087
+ };
17381
18088
  /**
17382
18089
  * URL to add as asset (must be http/https)
17383
18090
  */
17384
18091
  export type SaveCreativeRequestLandingPageUrl = string;
18092
+ export type SaveCreativeRequestPreviewBulkUpdateSelectionFormatKind = 'image' | 'html5' | 'display_tag' | 'image_carousel' | 'video_hosted' | 'video_vast' | 'audio_hosted' | 'audio_vast' | 'audio_daast' | 'sponsored_placement' | 'native_in_feed' | 'responsive_creative' | 'agent_placement' | 'seller_rendered_stateful_display' | 'coordinated_placements' | 'custom';
18093
+ /**
18094
+ * URL to add as asset (must be http/https)
18095
+ */
18096
+ export type SaveCreativeRequestPreviewBulkUpdateUpdateClickUrl = string;
18097
+ export type SaveCreativeRequestPreviewBulkUpdateUpdateFormatKind = 'image' | 'html5' | 'display_tag' | 'image_carousel' | 'video_hosted' | 'video_vast' | 'audio_hosted' | 'audio_vast' | 'audio_daast' | 'sponsored_placement' | 'native_in_feed' | 'responsive_creative' | 'agent_placement' | 'seller_rendered_stateful_display' | 'coordinated_placements' | 'custom';
18098
+ export type SaveCreativeRequestPreviewBulkUpdateUpdateFormatParams = {
18099
+ [key: string]: unknown;
18100
+ };
17385
18101
  /**
17386
18102
  * URL to add as asset (must be http/https)
17387
18103
  */
@@ -17395,7 +18111,40 @@ export type SaveCreativeResponses = {
17395
18111
  * Typed operation result
17396
18112
  */
17397
18113
  200: {
17398
- data: SaveCreativeSuccessDuplicateCreativeSuccess | {
18114
+ data: SaveCreativeSuccessDuplicateCreativeSuccess | SaveCreativeSuccessAgentApprovalRequired | {
18115
+ action: 'bulk_update_previewed';
18116
+ preview: {
18117
+ previewToken: string;
18118
+ expiresAt: string;
18119
+ selectionDigest: string;
18120
+ matchedCount: number;
18121
+ returnedCount: number;
18122
+ totalMatches: number;
18123
+ truncated: boolean;
18124
+ creatives: Array<{
18125
+ creativeId: string;
18126
+ stateRevision: number;
18127
+ deliveryAttached: boolean;
18128
+ }>;
18129
+ };
18130
+ } | {
18131
+ action: 'bulk_updated';
18132
+ batch: {
18133
+ previewToken: string;
18134
+ selectionDigest: string;
18135
+ matchedCount: number;
18136
+ updatedCount: number;
18137
+ unchangedCount: number;
18138
+ creatives: Array<{
18139
+ creativeId: string;
18140
+ stateRevision: number;
18141
+ status: 'updated';
18142
+ deliverySync: 'not_required' | 'queued' | 'completed' | 'failed';
18143
+ deliveryOperationIds?: Array<string>;
18144
+ }>;
18145
+ };
18146
+ replayed: boolean;
18147
+ } | {
17399
18148
  creative: SaveCreativeSuccessCreative;
17400
18149
  alreadyExisted?: SaveCreativeSuccessAlreadyExisted;
17401
18150
  assetAttachWarning?: SaveCreativeSuccessAssetAttachWarning;
@@ -17501,7 +18250,7 @@ export type SaveCreativeSessionData = {
17501
18250
  */
17502
18251
  idempotencyKey?: string;
17503
18252
  /**
17504
- * Leave unset for funded image drafts unless user names an engine. See Creative Engines guide.
18253
+ * Leave unset unless the buyer names a connected engine. The server chooses a compatible connected or Scope3-funded engine.
17505
18254
  */
17506
18255
  engine?: {
17507
18256
  /**
@@ -18445,6 +19194,55 @@ export type SaveCreativeSessionSuccessCreativeSessionRevision = number;
18445
19194
  export type SaveCreativeSessionSuccessCreativeSessionSavedDraftOperation = 'saved_draft';
18446
19195
  export type SaveCreativeSessionSuccessCreativeSessionSelectedOutputOperation = 'selected_output';
18447
19196
  export type SaveCreativeSessionSuccessCreativeSessionTruncated = true;
19197
+ export type SaveCreativeSuccessAgentApproval = {
19198
+ /**
19199
+ * Approval id.
19200
+ */
19201
+ id: string;
19202
+ /**
19203
+ * Kind of sensitive action, for example `buyer_child_account.create`.
19204
+ */
19205
+ kind: string;
19206
+ /**
19207
+ * `pending` waits for a person; `executing` was approved and is running; `succeeded`, `failed`, `rejected` and `expired` are final.
19208
+ */
19209
+ state: 'pending' | 'executing' | 'succeeded' | 'failed' | 'rejected' | 'expired';
19210
+ /**
19211
+ * Account the action applies to.
19212
+ */
19213
+ targetCustomerId: string;
19214
+ /**
19215
+ * Role the approver must hold on the account.
19216
+ */
19217
+ requiredRole: 'ADMIN' | 'SUPER_ADMIN' | null;
19218
+ /**
19219
+ * What will happen, in one line. Null once the approval is final.
19220
+ */
19221
+ summary: string | null;
19222
+ /**
19223
+ * Page on our site where a signed-in person approves or rejects the request.
19224
+ */
19225
+ url: string;
19226
+ createdAt: string;
19227
+ expiresAt: string;
19228
+ decidedAt: string | null;
19229
+ completedAt: string | null;
19230
+ /**
19231
+ * Reference to the result once succeeded.
19232
+ */
19233
+ resultReference: {
19234
+ [key: string]: string | number | boolean;
19235
+ } | null;
19236
+ /**
19237
+ * Reason code when the action failed.
19238
+ */
19239
+ failureCode: string | null;
19240
+ };
19241
+ export type SaveCreativeSuccessAgentApprovalRequired = {
19242
+ action: 'approval_required';
19243
+ message: string;
19244
+ approval: SaveCreativeSuccessAgentApproval;
19245
+ };
18448
19246
  export type SaveCreativeSuccessAlreadyExisted = true;
18449
19247
  export type SaveCreativeSuccessAssetAttachWarning = true;
18450
19248
  export type SaveCreativeSuccessAssetsAttached = number;
@@ -25187,6 +25985,10 @@ export type SavePlaybookData = {
25187
25985
  * Operator note. Omit to keep the current note; null clears it.
25188
25986
  */
25189
25987
  notes?: string | null;
25988
+ /**
25989
+ * Precondition. null: the rule must not exist yet. A timestamp: the updatedAt you read; a rule that changed returns CONFLICT. Omit to set it regardless.
25990
+ */
25991
+ expectedUpdatedAt?: string | null;
25190
25992
  }>;
25191
25993
  /**
25192
25994
  * Rules to delete. Name the domain and scope of each.
@@ -25200,6 +26002,10 @@ export type SavePlaybookData = {
25200
26002
  * brand: the buy's advertiser brand. operator: its buying agency.
25201
26003
  */
25202
26004
  scope: 'brand' | 'operator';
26005
+ /**
26006
+ * The updatedAt you read; a rule that changed or is gone returns CONFLICT.
26007
+ */
26008
+ expectedUpdatedAt?: string;
25203
26009
  }>;
25204
26010
  };
25205
26011
  /**