@zernio/node 0.2.718 → 0.2.719

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,50 @@ 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
+
1900
+ /**
1901
+ * campaign.advertising_channel_type. COST_CAP's underlying Google field differs by channel; see bidStrategy on PUT.
1902
+ */
1903
+ export type channel2 = 'SEARCH' | 'DISPLAY';
1904
+
1861
1905
  /**
1862
1906
  * Who a comment automation answers. Instagram only - Meta exposes the follow
1863
1907
  * relationship on no other platform, and only for people who have MESSAGED the
@@ -5003,6 +5047,51 @@ export type errorCategory = 'auth_expired' | 'user_content' | 'user_abuse' | 'ac
5003
5047
  */
5004
5048
  export type errorSource = 'user' | 'platform' | 'system';
5005
5049
 
5050
+ /**
5051
+ * A Google Ads portfolio bid strategy: a named bidding strategy shared across campaigns, with its R.130 report metrics over the queried date range.
5052
+ */
5053
+ export type PortfolioBidStrategy = {
5054
+ /**
5055
+ * Numeric bid strategy id; pass as portfolioBidStrategyId or in the {strategyId} path.
5056
+ */
5057
+ id?: string;
5058
+ name?: string;
5059
+ type?: 'TARGET_CPA' | 'TARGET_ROAS' | 'MAXIMIZE_CONVERSIONS' | 'MAXIMIZE_CONVERSION_VALUE';
5060
+ /**
5061
+ * ENABLED or REMOVED.
5062
+ */
5063
+ status?: string;
5064
+ /**
5065
+ * Number of campaigns currently attached.
5066
+ */
5067
+ campaignCount?: number;
5068
+ clicks?: number;
5069
+ /**
5070
+ * Cost in the account's currency units (converted from micros).
5071
+ */
5072
+ cost?: number;
5073
+ /**
5074
+ * Cost per conversion in the account's currency units.
5075
+ */
5076
+ costPerConversion?: number;
5077
+ impressions?: number;
5078
+ /**
5079
+ * Average CPC in the account's currency units.
5080
+ */
5081
+ averageCpc?: number;
5082
+ conversions?: number;
5083
+ /**
5084
+ * 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.
5085
+ */
5086
+ targetCpa?: (number) | null;
5087
+ /**
5088
+ * 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.
5089
+ */
5090
+ targetRoas?: (number) | null;
5091
+ };
5092
+
5093
+ export type type8 = 'TARGET_CPA' | 'TARGET_ROAS' | 'MAXIMIZE_CONVERSIONS' | 'MAXIMIZE_CONVERSION_VALUE';
5094
+
5006
5095
  export type Post = {
5007
5096
  _id?: string;
5008
5097
  userId?: (string | User);
@@ -6271,7 +6360,7 @@ export type UploadedFile = {
6271
6360
  mimeType?: string;
6272
6361
  };
6273
6362
 
6274
- export type type8 = 'image' | 'video' | 'document';
6363
+ export type type9 = 'image' | 'video' | 'document';
6275
6364
 
6276
6365
  export type UploadTokenResponse = {
6277
6366
  token?: string;
@@ -6757,7 +6846,7 @@ export type Verification = {
6757
6846
 
6758
6847
  export type status11 = 'pending' | 'approved' | 'expired' | 'max_attempts_reached' | 'canceled' | 'delivery_failed';
6759
6848
 
6760
- export type channel2 = 'sms';
6849
+ export type channel3 = 'sms';
6761
6850
 
6762
6851
  /**
6763
6852
  * Individual webhook configuration for receiving real-time notifications
@@ -9350,7 +9439,7 @@ export type WhatsAppTemplateButton = {
9350
9439
  navigate_screen?: string;
9351
9440
  };
9352
9441
 
9353
- export type type9 = 'quick_reply' | 'url' | 'phone_number' | 'otp' | 'copy_code' | 'flow' | 'mpm' | 'catalog';
9442
+ export type type10 = 'quick_reply' | 'url' | 'phone_number' | 'otp' | 'copy_code' | 'flow' | 'mpm' | 'catalog';
9354
9443
 
9355
9444
  /**
9356
9445
  * Required when type is otp
@@ -9512,7 +9601,7 @@ export type WorkflowNode = {
9512
9601
  * integrations (webhook, ai, handoff, start_call).
9513
9602
  *
9514
9603
  */
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';
9604
+ 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
9605
 
9517
9606
  /**
9518
9607
  * A single X API operation with its per-call price and the Zernio platform methods that trigger it.
@@ -9648,7 +9737,7 @@ export type XArticleBlock = {
9648
9737
  entity_ranges?: Array<XArticleEntityRange>;
9649
9738
  };
9650
9739
 
9651
- export type type11 = 'unstyled' | 'header-one' | 'header-two' | 'header-three' | 'unordered-list-item' | 'ordered-list-item' | 'blockquote' | 'atomic';
9740
+ export type type12 = 'unstyled' | 'header-one' | 'header-two' | 'header-three' | 'unordered-list-item' | 'ordered-list-item' | 'blockquote' | 'atomic';
9652
9741
 
9653
9742
  /**
9654
9743
  * X's snake_case content-state shape. Standard DraftJS camelCase fields such as entityMap, inlineStyleRanges, and entityRanges are rejected.
@@ -9727,7 +9816,7 @@ export type XArticleEntity = {
9727
9816
 
9728
9817
  export type mutability = 'immutable' | 'mutable' | 'segmented';
9729
9818
 
9730
- export type type12 = 'divider' | 'latex';
9819
+ export type type13 = 'divider' | 'latex';
9731
9820
 
9732
9821
  /**
9733
9822
  * The referenced entity must exist, and offset plus length must not exceed the containing block's text length.
@@ -30428,6 +30517,111 @@ export type GetAdsSearchTermsError = (ErrorResponse | {
30428
30517
  error?: string;
30429
30518
  } | unknown);
30430
30519
 
30520
+ export type ListBidStrategiesData = {
30521
+ query: {
30522
+ /**
30523
+ * Google ads SocialAccount id.
30524
+ */
30525
+ accountId: string;
30526
+ /**
30527
+ * Numeric Google Ads customer id (no dashes). Defaults to the account's connected customer.
30528
+ */
30529
+ customerId?: string;
30530
+ /**
30531
+ * Defaults to 30 days ago.
30532
+ */
30533
+ fromDate?: string;
30534
+ /**
30535
+ * Defaults to today.
30536
+ */
30537
+ toDate?: string;
30538
+ };
30539
+ };
30540
+
30541
+ export type ListBidStrategiesResponse = ({
30542
+ customerId?: string;
30543
+ /**
30544
+ * Account currency code; money fields are in this currency's units.
30545
+ */
30546
+ currency?: string;
30547
+ strategies?: Array<PortfolioBidStrategy>;
30548
+ });
30549
+
30550
+ export type ListBidStrategiesError = (ErrorResponse | {
30551
+ error?: string;
30552
+ } | unknown);
30553
+
30554
+ export type CreateBidStrategyData = {
30555
+ body: {
30556
+ /**
30557
+ * Google ads SocialAccount id.
30558
+ */
30559
+ accountId: string;
30560
+ /**
30561
+ * Numeric Google Ads customer id (no dashes). Defaults to the account's connected customer.
30562
+ */
30563
+ customerId?: string;
30564
+ name: string;
30565
+ type: 'TARGET_CPA' | 'TARGET_ROAS' | 'MAXIMIZE_CONVERSIONS' | 'MAXIMIZE_CONVERSION_VALUE';
30566
+ /**
30567
+ * Required when type is TARGET_CPA, in the account's currency units.
30568
+ */
30569
+ targetCpa?: number;
30570
+ /**
30571
+ * Required when type is TARGET_ROAS; a multiplier (2.0 = 2.0x).
30572
+ */
30573
+ targetRoas?: number;
30574
+ };
30575
+ };
30576
+
30577
+ export type CreateBidStrategyResponse = ({
30578
+ strategy?: {
30579
+ customerId?: string;
30580
+ /**
30581
+ * Numeric bid strategy id; pass as portfolioBidStrategyId or in the {strategyId} path.
30582
+ */
30583
+ id?: string;
30584
+ resourceName?: string;
30585
+ };
30586
+ });
30587
+
30588
+ export type CreateBidStrategyError = (unknown | {
30589
+ error?: string;
30590
+ });
30591
+
30592
+ export type UpdateBidStrategyData = {
30593
+ body: {
30594
+ /**
30595
+ * Google ads SocialAccount id.
30596
+ */
30597
+ accountId: string;
30598
+ /**
30599
+ * Numeric Google Ads customer id (no dashes). Defaults to the account's connected customer.
30600
+ */
30601
+ customerId?: string;
30602
+ name?: string;
30603
+ type?: 'TARGET_CPA' | 'TARGET_ROAS' | 'MAXIMIZE_CONVERSIONS' | 'MAXIMIZE_CONVERSION_VALUE';
30604
+ targetCpa?: number;
30605
+ targetRoas?: number;
30606
+ };
30607
+ path: {
30608
+ /**
30609
+ * Numeric Google Ads bid strategy id.
30610
+ */
30611
+ strategyId: string;
30612
+ };
30613
+ };
30614
+
30615
+ export type UpdateBidStrategyResponse = ({
30616
+ strategy?: {
30617
+ customerId?: string;
30618
+ };
30619
+ });
30620
+
30621
+ export type UpdateBidStrategyError = (ErrorResponse | {
30622
+ error?: string;
30623
+ } | unknown);
30624
+
30431
30625
  export type ListLocalServicesLeadsData = {
30432
30626
  query: {
30433
30627
  /**
@@ -30777,17 +30971,21 @@ export type CreateAdCampaignData = {
30777
30971
  budgetType?: 'daily' | 'lifetime';
30778
30972
  status?: 'ACTIVE' | 'PAUSED';
30779
30973
  /**
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.
30974
+ * 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
30975
  */
30782
30976
  bidStrategy?: 'LOWEST_COST_WITHOUT_CAP' | 'LOWEST_COST_WITH_BID_CAP' | 'COST_CAP' | 'LOWEST_COST_WITH_MIN_ROAS';
30783
30977
  /**
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.
30978
+ * 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
30979
  */
30786
30980
  bidAmount?: number;
30787
30981
  /**
30788
30982
  * Decimal ROAS multiplier (2.0 = 2.0x). Required for LOWEST_COST_WITH_MIN_ROAS.
30789
30983
  */
30790
30984
  roasAverageFloor?: number;
30985
+ /**
30986
+ * 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.
30987
+ */
30988
+ portfolioBidStrategyId?: string;
30791
30989
  };
30792
30990
  headers?: {
30793
30991
  /**
@@ -30850,6 +31048,37 @@ export type UpdateAdCampaignStatusError = (unknown | {
30850
31048
  error?: string;
30851
31049
  });
30852
31050
 
31051
+ export type GetCampaignBiddingData = {
31052
+ path: {
31053
+ /**
31054
+ * Numeric Google platform campaign id.
31055
+ */
31056
+ campaignId: string;
31057
+ };
31058
+ query: {
31059
+ /**
31060
+ * Zernio Google Ads SocialAccount id: resolves the customer id + refresh token.
31061
+ */
31062
+ accountId: string;
31063
+ /**
31064
+ * Numeric Google Ads customer id (no dashes). Required when the connection has multiple Google Ads accounts; optional (and inferred) when it has only one.
31065
+ */
31066
+ customerId?: string;
31067
+ /**
31068
+ * Required: campaign IDs are not globally unique. Only "google" is supported today.
31069
+ */
31070
+ platform: 'google';
31071
+ };
31072
+ };
31073
+
31074
+ export type GetCampaignBiddingResponse = (({
31075
+ campaignId?: string;
31076
+ } & CampaignBidding));
31077
+
31078
+ export type GetCampaignBiddingError = (unknown | {
31079
+ error?: string;
31080
+ });
31081
+
30853
31082
  export type UpdateAdCampaignData = {
30854
31083
  body: {
30855
31084
  /**
@@ -30861,7 +31090,7 @@ export type UpdateAdCampaignData = {
30861
31090
  */
30862
31091
  accountId?: string;
30863
31092
  /**
30864
- * **Meta + Google.** On Meta, the campaign default that ad sets inherit unless they override it. On Google, the campaign's own bidding strategy.
31093
+ * **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
31094
  */
30866
31095
  bidStrategy?: (BidStrategy);
30867
31096
  /**
@@ -30872,6 +31101,10 @@ export type UpdateAdCampaignData = {
30872
31101
  * **Google only.** Decimal ROAS multiplier (2.0 = 2.0x), required for LOWEST_COST_WITH_MIN_ROAS.
30873
31102
  */
30874
31103
  roasAverageFloor?: number;
31104
+ /**
31105
+ * **Google only.** Attach an existing portfolio bid strategy (numeric id from GET /v1/ads/bid-strategies) instead of setting bidStrategy. Exclusive with bidStrategy.
31106
+ */
31107
+ portfolioBidStrategyId?: string;
30875
31108
  /**
30876
31109
  * **Meta only.** The CBO budget.
30877
31110
  */
@@ -30914,6 +31147,10 @@ export type UpdateAdCampaignResponse = ({
30914
31147
  bidStrategy?: BidStrategy;
30915
31148
  bidAmount?: number;
30916
31149
  roasAverageFloor?: number;
31150
+ /**
31151
+ * Google only. Echoed back, but NOT mirrored onto local Ad documents (no column for it yet).
31152
+ */
31153
+ portfolioBidStrategyId?: string;
30917
31154
  platformSpecificData?: {
30918
31155
  [key: string]: unknown;
30919
31156
  };
@@ -31803,8 +32040,9 @@ export type UpdateAdData = {
31803
32040
  type?: 'daily' | 'lifetime';
31804
32041
  };
31805
32042
  /**
31806
- * Meta + TikTok (demographics/interests), Google (keyword edits only),
31807
- * and LinkedIn (geo countries). Pinterest / X return 501.
32043
+ * Meta + TikTok (demographics/interests), Google (keyword and device
32044
+ * bid adjustment edits only), and LinkedIn (geo countries). Pinterest / X
32045
+ * return 501.
31808
32046
  *
31809
32047
  */
31810
32048
  targeting?: {
@@ -31821,6 +32059,16 @@ export type UpdateAdData = {
31821
32059
  negativeKeywords?: Array<(string | {
31822
32060
  text: string;
31823
32061
  matchType?: 'exact' | 'phrase' | 'broad';
32062
+ })>;
32063
+ /**
32064
+ * 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 }.
32065
+ */
32066
+ devices?: Array<('MOBILE' | 'DESKTOP' | 'TABLET' | 'CONNECTED_TV' | {
32067
+ device: 'MOBILE' | 'DESKTOP' | 'TABLET' | 'CONNECTED_TV';
32068
+ /**
32069
+ * Google device bid modifier, 0.1 to 10 (minus 90% to plus 900%). Omit a device to exclude it.
32070
+ */
32071
+ bidModifier?: number;
31824
32072
  })>;
31825
32073
  ageMin?: number;
31826
32074
  ageMax?: number;
@@ -34907,6 +35155,8 @@ export type CreateStandaloneAdData = {
34907
35155
  *
34908
35156
  * 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
35157
  *
35158
+ * 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.
35159
+ *
34910
35160
  * @deprecated
34911
35161
  */
34912
35162
  bidStrategy?: (BidStrategy);
@@ -34939,6 +35189,10 @@ export type CreateStandaloneAdData = {
34939
35189
  * @deprecated
34940
35190
  */
34941
35191
  roasAverageFloor?: number;
35192
+ /**
35193
+ * 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.
35194
+ */
35195
+ portfolioBidStrategyId?: string;
34942
35196
  /**
34943
35197
  * Meta only (facebook, instagram; other platforms return 400). Value rule set
34944
35198
  * to attach to the new ad set, from `/v1/ads/value-rule-sets`. Attachment is