@zernio/node 0.2.718 → 0.2.720

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.
@@ -1858,6 +1858,58 @@ export type CampaignAnalyticsResponse = {
1858
1858
  };
1859
1859
  };
1860
1860
 
1861
+ /**
1862
+ * A Google campaign's current bidding, mapped onto the same triplet PUT /v1/ads/campaigns/{campaignId} accepts.
1863
+ */
1864
+ export type CampaignBidding = {
1865
+ /**
1866
+ * campaign.advertising_channel_type. COST_CAP's underlying Google field differs by channel; see bidStrategy on PUT.
1867
+ */
1868
+ channel?: 'SEARCH' | 'DISPLAY';
1869
+ /**
1870
+ * Google's raw enum: MAXIMIZE_CONVERSIONS, TARGET_CPA, MAXIMIZE_CONVERSION_VALUE, TARGET_ROAS, TARGET_SPEND, MANUAL_CPC, TARGET_IMPRESSION_SHARE, or another Google adds later.
1871
+ */
1872
+ biddingStrategyType?: string;
1873
+ /**
1874
+ * Null when the campaign is on a strategy PUT does not model (Manual CPC, Target Impression Share, ...); show biddingStrategyType instead in that case.
1875
+ */
1876
+ bidSpec?: {
1877
+ bidStrategy?: BidStrategy;
1878
+ /**
1879
+ * Whole currency units. Present for COST_CAP and LOWEST_COST_WITH_BID_CAP, and omitted when the campaign is on a bare TARGET_SPEND with no CPC ceiling set.
1880
+ */
1881
+ bidAmount?: number;
1882
+ /**
1883
+ * Decimal ROAS multiplier (2.0 = 2.0x). Present for LOWEST_COST_WITH_MIN_ROAS.
1884
+ */
1885
+ roasAverageFloor?: number;
1886
+ /**
1887
+ * Present alone (bidStrategy omitted) when the campaign is on a portfolio strategy; see portfolio.
1888
+ */
1889
+ portfolioBidStrategyId?: string;
1890
+ } | null;
1891
+ /**
1892
+ * Set only when the campaign is on a portfolio bid strategy (campaign.bidding_strategy); null otherwise.
1893
+ */
1894
+ portfolio?: {
1895
+ id?: string;
1896
+ name?: string;
1897
+ } | null;
1898
+ /**
1899
+ * When this data was fetched from Google. Null when it was never served from cache.
1900
+ */
1901
+ cachedAt?: (string) | null;
1902
+ /**
1903
+ * True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read.
1904
+ */
1905
+ stale?: boolean;
1906
+ };
1907
+
1908
+ /**
1909
+ * campaign.advertising_channel_type. COST_CAP's underlying Google field differs by channel; see bidStrategy on PUT.
1910
+ */
1911
+ export type channel2 = 'SEARCH' | 'DISPLAY';
1912
+
1861
1913
  /**
1862
1914
  * Who a comment automation answers. Instagram only - Meta exposes the follow
1863
1915
  * relationship on no other platform, and only for people who have MESSAGED the
@@ -5003,6 +5055,51 @@ export type errorCategory = 'auth_expired' | 'user_content' | 'user_abuse' | 'ac
5003
5055
  */
5004
5056
  export type errorSource = 'user' | 'platform' | 'system';
5005
5057
 
5058
+ /**
5059
+ * A Google Ads portfolio bid strategy: a named bidding strategy shared across campaigns, with its R.130 report metrics over the queried date range.
5060
+ */
5061
+ export type PortfolioBidStrategy = {
5062
+ /**
5063
+ * Numeric bid strategy id; pass as portfolioBidStrategyId or in the {strategyId} path.
5064
+ */
5065
+ id?: string;
5066
+ name?: string;
5067
+ type?: 'TARGET_CPA' | 'TARGET_ROAS' | 'MAXIMIZE_CONVERSIONS' | 'MAXIMIZE_CONVERSION_VALUE';
5068
+ /**
5069
+ * ENABLED or REMOVED.
5070
+ */
5071
+ status?: string;
5072
+ /**
5073
+ * Number of campaigns currently attached.
5074
+ */
5075
+ campaignCount?: number;
5076
+ clicks?: number;
5077
+ /**
5078
+ * Cost in the account's currency units (converted from micros).
5079
+ */
5080
+ cost?: number;
5081
+ /**
5082
+ * Cost per conversion in the account's currency units.
5083
+ */
5084
+ costPerConversion?: number;
5085
+ impressions?: number;
5086
+ /**
5087
+ * Average CPC in the account's currency units.
5088
+ */
5089
+ averageCpc?: number;
5090
+ conversions?: number;
5091
+ /**
5092
+ * Current target, in the account's currency units. Null for a ROAS-family type (TARGET_ROAS, MAXIMIZE_CONVERSION_VALUE), or a Maximize type with no target set. Pre-fills the edit form's target field.
5093
+ */
5094
+ targetCpa?: (number) | null;
5095
+ /**
5096
+ * Current target as a decimal multiplier (2.0 = 2.0x). Null for a CPA-family type (TARGET_CPA, MAXIMIZE_CONVERSIONS), or a Maximize type with no target set.
5097
+ */
5098
+ targetRoas?: (number) | null;
5099
+ };
5100
+
5101
+ export type type8 = 'TARGET_CPA' | 'TARGET_ROAS' | 'MAXIMIZE_CONVERSIONS' | 'MAXIMIZE_CONVERSION_VALUE';
5102
+
5006
5103
  export type Post = {
5007
5104
  _id?: string;
5008
5105
  userId?: (string | User);
@@ -6271,7 +6368,7 @@ export type UploadedFile = {
6271
6368
  mimeType?: string;
6272
6369
  };
6273
6370
 
6274
- export type type8 = 'image' | 'video' | 'document';
6371
+ export type type9 = 'image' | 'video' | 'document';
6275
6372
 
6276
6373
  export type UploadTokenResponse = {
6277
6374
  token?: string;
@@ -6757,7 +6854,7 @@ export type Verification = {
6757
6854
 
6758
6855
  export type status11 = 'pending' | 'approved' | 'expired' | 'max_attempts_reached' | 'canceled' | 'delivery_failed';
6759
6856
 
6760
- export type channel2 = 'sms';
6857
+ export type channel3 = 'sms';
6761
6858
 
6762
6859
  /**
6763
6860
  * Individual webhook configuration for receiving real-time notifications
@@ -9350,7 +9447,7 @@ export type WhatsAppTemplateButton = {
9350
9447
  navigate_screen?: string;
9351
9448
  };
9352
9449
 
9353
- export type type9 = 'quick_reply' | 'url' | 'phone_number' | 'otp' | 'copy_code' | 'flow' | 'mpm' | 'catalog';
9450
+ export type type10 = 'quick_reply' | 'url' | 'phone_number' | 'otp' | 'copy_code' | 'flow' | 'mpm' | 'catalog';
9354
9451
 
9355
9452
  /**
9356
9453
  * Required when type is otp
@@ -9512,7 +9609,7 @@ export type WorkflowNode = {
9512
9609
  * integrations (webhook, ai, handoff, start_call).
9513
9610
  *
9514
9611
  */
9515
- export type type10 = 'trigger' | 'send_message' | 'wait_for_reply' | 'condition' | 'set_variable' | 'delay' | 'webhook' | 'ai' | 'handoff' | 'start_call' | 'a_b_split' | 'set_field' | 'enroll_sequence' | 'add_tag' | 'remove_tag' | 'end';
9612
+ export type type11 = 'trigger' | 'send_message' | 'wait_for_reply' | 'condition' | 'set_variable' | 'delay' | 'webhook' | 'ai' | 'handoff' | 'start_call' | 'a_b_split' | 'set_field' | 'enroll_sequence' | 'add_tag' | 'remove_tag' | 'end';
9516
9613
 
9517
9614
  /**
9518
9615
  * A single X API operation with its per-call price and the Zernio platform methods that trigger it.
@@ -9648,7 +9745,7 @@ export type XArticleBlock = {
9648
9745
  entity_ranges?: Array<XArticleEntityRange>;
9649
9746
  };
9650
9747
 
9651
- export type type11 = 'unstyled' | 'header-one' | 'header-two' | 'header-three' | 'unordered-list-item' | 'ordered-list-item' | 'blockquote' | 'atomic';
9748
+ export type type12 = 'unstyled' | 'header-one' | 'header-two' | 'header-three' | 'unordered-list-item' | 'ordered-list-item' | 'blockquote' | 'atomic';
9652
9749
 
9653
9750
  /**
9654
9751
  * X's snake_case content-state shape. Standard DraftJS camelCase fields such as entityMap, inlineStyleRanges, and entityRanges are rejected.
@@ -9727,7 +9824,7 @@ export type XArticleEntity = {
9727
9824
 
9728
9825
  export type mutability = 'immutable' | 'mutable' | 'segmented';
9729
9826
 
9730
- export type type12 = 'divider' | 'latex';
9827
+ export type type13 = 'divider' | 'latex';
9731
9828
 
9732
9829
  /**
9733
9830
  * The referenced entity must exist, and offset plus length must not exceed the containing block's text length.
@@ -30422,12 +30519,133 @@ export type GetAdsSearchTermsResponse = ({
30422
30519
  */
30423
30520
  nextPageToken?: (string) | null;
30424
30521
  };
30522
+ /**
30523
+ * When this data was fetched from Google. Null when it was never served from cache.
30524
+ */
30525
+ cachedAt?: (string) | null;
30526
+ /**
30527
+ * True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read.
30528
+ */
30529
+ stale?: boolean;
30425
30530
  });
30426
30531
 
30427
30532
  export type GetAdsSearchTermsError = (ErrorResponse | {
30428
30533
  error?: string;
30429
30534
  } | unknown);
30430
30535
 
30536
+ export type ListBidStrategiesData = {
30537
+ query: {
30538
+ /**
30539
+ * Google ads SocialAccount id.
30540
+ */
30541
+ accountId: string;
30542
+ /**
30543
+ * Numeric Google Ads customer id (no dashes). Defaults to the account's connected customer.
30544
+ */
30545
+ customerId?: string;
30546
+ /**
30547
+ * Defaults to 30 days ago.
30548
+ */
30549
+ fromDate?: string;
30550
+ /**
30551
+ * Defaults to today.
30552
+ */
30553
+ toDate?: string;
30554
+ };
30555
+ };
30556
+
30557
+ export type ListBidStrategiesResponse = ({
30558
+ customerId?: string;
30559
+ /**
30560
+ * Account currency code; money fields are in this currency's units.
30561
+ */
30562
+ currency?: string;
30563
+ strategies?: Array<PortfolioBidStrategy>;
30564
+ /**
30565
+ * When this data was fetched from Google. Null when it was never served from cache.
30566
+ */
30567
+ cachedAt?: (string) | null;
30568
+ /**
30569
+ * True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read.
30570
+ */
30571
+ stale?: boolean;
30572
+ });
30573
+
30574
+ export type ListBidStrategiesError = (ErrorResponse | {
30575
+ error?: string;
30576
+ } | unknown);
30577
+
30578
+ export type CreateBidStrategyData = {
30579
+ body: {
30580
+ /**
30581
+ * Google ads SocialAccount id.
30582
+ */
30583
+ accountId: string;
30584
+ /**
30585
+ * Numeric Google Ads customer id (no dashes). Defaults to the account's connected customer.
30586
+ */
30587
+ customerId?: string;
30588
+ name: string;
30589
+ type: 'TARGET_CPA' | 'TARGET_ROAS' | 'MAXIMIZE_CONVERSIONS' | 'MAXIMIZE_CONVERSION_VALUE';
30590
+ /**
30591
+ * Required when type is TARGET_CPA, in the account's currency units.
30592
+ */
30593
+ targetCpa?: number;
30594
+ /**
30595
+ * Required when type is TARGET_ROAS; a multiplier (2.0 = 2.0x).
30596
+ */
30597
+ targetRoas?: number;
30598
+ };
30599
+ };
30600
+
30601
+ export type CreateBidStrategyResponse = ({
30602
+ strategy?: {
30603
+ customerId?: string;
30604
+ /**
30605
+ * Numeric bid strategy id; pass as portfolioBidStrategyId or in the {strategyId} path.
30606
+ */
30607
+ id?: string;
30608
+ resourceName?: string;
30609
+ };
30610
+ });
30611
+
30612
+ export type CreateBidStrategyError = (unknown | {
30613
+ error?: string;
30614
+ });
30615
+
30616
+ export type UpdateBidStrategyData = {
30617
+ body: {
30618
+ /**
30619
+ * Google ads SocialAccount id.
30620
+ */
30621
+ accountId: string;
30622
+ /**
30623
+ * Numeric Google Ads customer id (no dashes). Defaults to the account's connected customer.
30624
+ */
30625
+ customerId?: string;
30626
+ name?: string;
30627
+ type?: 'TARGET_CPA' | 'TARGET_ROAS' | 'MAXIMIZE_CONVERSIONS' | 'MAXIMIZE_CONVERSION_VALUE';
30628
+ targetCpa?: number;
30629
+ targetRoas?: number;
30630
+ };
30631
+ path: {
30632
+ /**
30633
+ * Numeric Google Ads bid strategy id.
30634
+ */
30635
+ strategyId: string;
30636
+ };
30637
+ };
30638
+
30639
+ export type UpdateBidStrategyResponse = ({
30640
+ strategy?: {
30641
+ customerId?: string;
30642
+ };
30643
+ });
30644
+
30645
+ export type UpdateBidStrategyError = (ErrorResponse | {
30646
+ error?: string;
30647
+ } | unknown);
30648
+
30431
30649
  export type ListLocalServicesLeadsData = {
30432
30650
  query: {
30433
30651
  /**
@@ -30777,17 +30995,21 @@ export type CreateAdCampaignData = {
30777
30995
  budgetType?: 'daily' | 'lifetime';
30778
30996
  status?: 'ACTIVE' | 'PAUSED';
30779
30997
  /**
30780
- * Campaign bid strategy. Meta stores `bid_strategy` alongside the budget, so this REQUIRES `budgetAmount` + `budgetType` on the same request; sending it without a campaign budget is a 400. A campaign carrying a strategy without its `bid_amount` makes every ad set created under it fail with an error that names the ad set (code 100, subcode 1815857), so the bad state is rejected up front rather than accepted. To bid at ad-set level, set the strategy there instead.
30998
+ * Campaign bid strategy. Meta stores `bid_strategy` alongside the budget, so this REQUIRES `budgetAmount` + `budgetType` on the same request; sending it without a campaign budget is a 400. A campaign carrying a strategy without its `bid_amount` makes every ad set created under it fail with an error that names the ad set (code 100, subcode 1815857), so the bad state is rejected up front rather than accepted. To bid at ad-set level on Meta, set the strategy there instead. On Google: LOWEST_COST_WITHOUT_CAP = Maximize Conversions, COST_CAP + bidAmount = Target CPA, LOWEST_COST_WITH_MIN_ROAS + roasAverageFloor = Target ROAS, LOWEST_COST_WITH_BID_CAP + bidAmount = Maximize Clicks with a CPC ceiling; portfolioBidStrategyId attaches a portfolio strategy instead.
30781
30999
  */
30782
31000
  bidStrategy?: 'LOWEST_COST_WITHOUT_CAP' | 'LOWEST_COST_WITH_BID_CAP' | 'COST_CAP' | 'LOWEST_COST_WITH_MIN_ROAS';
30783
31001
  /**
30784
- * Whole currency units (USD: 5 = $5.00). Required for LOWEST_COST_WITH_BID_CAP and COST_CAP; ignored otherwise. Validated here but NOT stored by Meta: the campaign object has no bid_amount field, only bid_strategy lives on it. The amount takes effect once an ad set joins this campaign (existingCampaignId on POST /v1/ads/create) and supplies its own bidAmount there.
31002
+ * Whole currency units (USD: 5 = $5.00). Required for LOWEST_COST_WITH_BID_CAP and COST_CAP; ignored otherwise. On Meta, validated here but NOT stored: the campaign object has no bid_amount field, only bid_strategy lives on it, and the amount takes effect once an ad set joins this campaign (existingCampaignId on POST /v1/ads/create) and supplies its own bidAmount there. On Google, stored directly on the campaign's bidding strategy.
30785
31003
  */
30786
31004
  bidAmount?: number;
30787
31005
  /**
30788
31006
  * Decimal ROAS multiplier (2.0 = 2.0x). Required for LOWEST_COST_WITH_MIN_ROAS.
30789
31007
  */
30790
31008
  roasAverageFloor?: number;
31009
+ /**
31010
+ * Google only. Attach an existing portfolio bid strategy (numeric id from GET /v1/ads/bid-strategies) to the new campaign instead of a standard one. Exclusive with bidStrategy.
31011
+ */
31012
+ portfolioBidStrategyId?: string;
30791
31013
  };
30792
31014
  headers?: {
30793
31015
  /**
@@ -30850,6 +31072,37 @@ export type UpdateAdCampaignStatusError = (unknown | {
30850
31072
  error?: string;
30851
31073
  });
30852
31074
 
31075
+ export type GetCampaignBiddingData = {
31076
+ path: {
31077
+ /**
31078
+ * Numeric Google platform campaign id.
31079
+ */
31080
+ campaignId: string;
31081
+ };
31082
+ query: {
31083
+ /**
31084
+ * Zernio Google Ads SocialAccount id: resolves the customer id + refresh token.
31085
+ */
31086
+ accountId: string;
31087
+ /**
31088
+ * Numeric Google Ads customer id (no dashes). Required when the connection has multiple Google Ads accounts; optional (and inferred) when it has only one.
31089
+ */
31090
+ customerId?: string;
31091
+ /**
31092
+ * Required: campaign IDs are not globally unique. Only "google" is supported today.
31093
+ */
31094
+ platform: 'google';
31095
+ };
31096
+ };
31097
+
31098
+ export type GetCampaignBiddingResponse = (({
31099
+ campaignId?: string;
31100
+ } & CampaignBidding));
31101
+
31102
+ export type GetCampaignBiddingError = (unknown | {
31103
+ error?: string;
31104
+ });
31105
+
30853
31106
  export type UpdateAdCampaignData = {
30854
31107
  body: {
30855
31108
  /**
@@ -30861,7 +31114,7 @@ export type UpdateAdCampaignData = {
30861
31114
  */
30862
31115
  accountId?: string;
30863
31116
  /**
30864
- * **Meta + Google.** On Meta, the campaign default that ad sets inherit unless they override it. On Google, the campaign's own bidding strategy.
31117
+ * **Meta + Google.** On Meta, the campaign default that ad sets inherit unless they override it. On Google, the campaign's own bidding strategy. On Google: LOWEST_COST_WITHOUT_CAP = Maximize Conversions, COST_CAP + bidAmount = Target CPA, LOWEST_COST_WITH_MIN_ROAS + roasAverageFloor = Target ROAS, LOWEST_COST_WITH_BID_CAP + bidAmount = Maximize Clicks with a CPC ceiling; portfolioBidStrategyId attaches a portfolio strategy instead.
30865
31118
  */
30866
31119
  bidStrategy?: (BidStrategy);
30867
31120
  /**
@@ -30872,6 +31125,10 @@ export type UpdateAdCampaignData = {
30872
31125
  * **Google only.** Decimal ROAS multiplier (2.0 = 2.0x), required for LOWEST_COST_WITH_MIN_ROAS.
30873
31126
  */
30874
31127
  roasAverageFloor?: number;
31128
+ /**
31129
+ * **Google only.** Attach an existing portfolio bid strategy (numeric id from GET /v1/ads/bid-strategies) instead of setting bidStrategy. Exclusive with bidStrategy.
31130
+ */
31131
+ portfolioBidStrategyId?: string;
30875
31132
  /**
30876
31133
  * **Meta only.** The CBO budget.
30877
31134
  */
@@ -30914,6 +31171,10 @@ export type UpdateAdCampaignResponse = ({
30914
31171
  bidStrategy?: BidStrategy;
30915
31172
  bidAmount?: number;
30916
31173
  roasAverageFloor?: number;
31174
+ /**
31175
+ * Google only. Echoed back, but NOT mirrored onto local Ad documents (no column for it yet).
31176
+ */
31177
+ portfolioBidStrategyId?: string;
30917
31178
  platformSpecificData?: {
30918
31179
  [key: string]: unknown;
30919
31180
  };
@@ -30972,6 +31233,14 @@ export type ListCampaignNegativeKeywordsResponse = ({
30972
31233
  text?: string;
30973
31234
  matchType?: 'exact' | 'phrase' | 'broad';
30974
31235
  }>;
31236
+ /**
31237
+ * When this list was fetched from Google. Null when it was never served from cache.
31238
+ */
31239
+ cachedAt?: (string) | null;
31240
+ /**
31241
+ * True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read.
31242
+ */
31243
+ stale?: boolean;
30975
31244
  });
30976
31245
 
30977
31246
  export type ListCampaignNegativeKeywordsError = ({
@@ -31149,6 +31418,14 @@ export type GetCampaignTargetingResponse = ({
31149
31418
  id?: string;
31150
31419
  name?: string;
31151
31420
  }>;
31421
+ /**
31422
+ * When this targeting was fetched from Google. Null when it was never served from cache.
31423
+ */
31424
+ cachedAt?: (string) | null;
31425
+ /**
31426
+ * True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read.
31427
+ */
31428
+ stale?: boolean;
31152
31429
  });
31153
31430
 
31154
31431
  export type GetCampaignTargetingError = (ErrorResponse | {
@@ -31211,6 +31488,29 @@ export type UpdateCampaignTargetingResponse = ({
31211
31488
  * Which targeting fields were applied.
31212
31489
  */
31213
31490
  updated?: Array<('devices' | 'locations' | 'languages')>;
31491
+ devices?: Array<{
31492
+ device?: 'MOBILE' | 'DESKTOP' | 'TABLET' | 'CONNECTED_TV';
31493
+ included?: boolean;
31494
+ /**
31495
+ * Always null on this read; see GET's description.
31496
+ */
31497
+ bidModifier?: (number) | null;
31498
+ }>;
31499
+ locations?: Array<{
31500
+ /**
31501
+ * Numeric id from Google's geoTargetConstants/{id}.
31502
+ */
31503
+ geoTargetId?: string;
31504
+ /**
31505
+ * true = excluded location.
31506
+ */
31507
+ negative?: boolean;
31508
+ }>;
31509
+ languages?: Array<{
31510
+ code?: string;
31511
+ id?: string;
31512
+ name?: string;
31513
+ }>;
31214
31514
  });
31215
31515
 
31216
31516
  export type UpdateCampaignTargetingError = (ErrorResponse | {
@@ -31803,8 +32103,9 @@ export type UpdateAdData = {
31803
32103
  type?: 'daily' | 'lifetime';
31804
32104
  };
31805
32105
  /**
31806
- * Meta + TikTok (demographics/interests), Google (keyword edits only),
31807
- * and LinkedIn (geo countries). Pinterest / X return 501.
32106
+ * Meta + TikTok (demographics/interests), Google (keyword and device
32107
+ * bid adjustment edits only), and LinkedIn (geo countries). Pinterest / X
32108
+ * return 501.
31808
32109
  *
31809
32110
  */
31810
32111
  targeting?: {
@@ -31821,6 +32122,16 @@ export type UpdateAdData = {
31821
32122
  negativeKeywords?: Array<(string | {
31822
32123
  text: string;
31823
32124
  matchType?: 'exact' | 'phrase' | 'broad';
32125
+ })>;
32126
+ /**
32127
+ * Google only. The FULL new set of device criteria for the campaign; devices not listed are excluded. Entries are a device name alone (included, no bid adjustment) or { device, bidModifier }.
32128
+ */
32129
+ devices?: Array<('MOBILE' | 'DESKTOP' | 'TABLET' | 'CONNECTED_TV' | {
32130
+ device: 'MOBILE' | 'DESKTOP' | 'TABLET' | 'CONNECTED_TV';
32131
+ /**
32132
+ * Google device bid modifier, 0.1 to 10 (minus 90% to plus 900%). Omit a device to exclude it.
32133
+ */
32134
+ bidModifier?: number;
31824
32135
  })>;
31825
32136
  ageMin?: number;
31826
32137
  ageMax?: number;
@@ -33435,6 +33746,14 @@ export type ListAccountCalloutsResponse = ({
33435
33746
  */
33436
33747
  status?: string;
33437
33748
  }>;
33749
+ /**
33750
+ * When this list was fetched from Google. Null when it was never served from cache.
33751
+ */
33752
+ cachedAt?: (string) | null;
33753
+ /**
33754
+ * True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read.
33755
+ */
33756
+ stale?: boolean;
33438
33757
  });
33439
33758
 
33440
33759
  export type ListAccountCalloutsError = (ErrorResponse | {
@@ -33626,6 +33945,14 @@ export type ListAdAccountsResponse = ({
33626
33945
  */
33627
33946
  unusableReason?: (string) | null;
33628
33947
  }>;
33948
+ /**
33949
+ * Google only. When this list was fetched from Google. Null when it was never served from cache, or on other platforms.
33950
+ */
33951
+ cachedAt?: (string) | null;
33952
+ /**
33953
+ * Google only. True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read. Absent on other platforms.
33954
+ */
33955
+ stale?: boolean;
33629
33956
  });
33630
33957
 
33631
33958
  export type ListAdAccountsError = ({
@@ -34907,6 +35234,8 @@ export type CreateStandaloneAdData = {
34907
35234
  *
34908
35235
  * OpenAI Ads: required on every ad group via this flat field, the only channel it supports (`platformSpecificData` is Meta/LinkedIn-only and returns 400 for OpenAI). No auto-bid option exists; send `LOWEST_COST_WITH_BID_CAP` or `COST_CAP` together with `bidAmount`, omitting it returns 400.
34909
35236
  *
35237
+ * Google (not deprecated there, this shared flat field is Google's only shape): applied to the campaign this call creates. On Google: LOWEST_COST_WITHOUT_CAP = Maximize Conversions, COST_CAP + bidAmount = Target CPA, LOWEST_COST_WITH_MIN_ROAS + roasAverageFloor = Target ROAS, LOWEST_COST_WITH_BID_CAP + bidAmount = Maximize Clicks with a CPC ceiling; portfolioBidStrategyId attaches a portfolio strategy instead. Omitted, the campaign falls back to a goal-based default.
35238
+ *
34910
35239
  * @deprecated
34911
35240
  */
34912
35241
  bidStrategy?: (BidStrategy);
@@ -34939,6 +35268,10 @@ export type CreateStandaloneAdData = {
34939
35268
  * @deprecated
34940
35269
  */
34941
35270
  roasAverageFloor?: number;
35271
+ /**
35272
+ * Google only. Attach an existing portfolio bid strategy (numeric id from GET /v1/ads/bid-strategies) to the new campaign instead of a standard one. Exclusive with bidStrategy.
35273
+ */
35274
+ portfolioBidStrategyId?: string;
34942
35275
  /**
34943
35276
  * Meta only (facebook, instagram; other platforms return 400). Value rule set
34944
35277
  * to attach to the new ad set, from `/v1/ads/value-rule-sets`. Attachment is
@@ -36768,6 +37101,14 @@ export type ListConversionActionsResponse = ({
36768
37101
  */
36769
37102
  customerId?: string;
36770
37103
  actions?: Array<ConversionAction>;
37104
+ /**
37105
+ * When this list was fetched from Google. Null when it was never served from cache.
37106
+ */
37107
+ cachedAt?: (string) | null;
37108
+ /**
37109
+ * True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read.
37110
+ */
37111
+ stale?: boolean;
36771
37112
  });
36772
37113
 
36773
37114
  export type ListConversionActionsError = (ErrorResponse | {