@getlatedev/node 0.2.1106 → 0.2.1108

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.
package/dist/index.d.mts CHANGED
@@ -937,7 +937,7 @@ declare class Zernio {
937
937
  listCommentAutomations: <ThrowOnError extends boolean = false>(options?: _hey_api_client_fetch.OptionsLegacyParser<ListCommentAutomationsData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<ListCommentAutomationsResponse, unknown, ThrowOnError>;
938
938
  createCommentAutomation: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<CreateCommentAutomationData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<CreateCommentAutomationResponse, unknown, ThrowOnError>;
939
939
  getCommentAutomation: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<GetCommentAutomationData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<GetCommentAutomationResponse, GetCommentAutomationError, ThrowOnError>;
940
- updateCommentAutomation: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<UpdateCommentAutomationData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<UpdateCommentAutomationResponse, UpdateCommentAutomationError, ThrowOnError>;
940
+ updateCommentAutomation: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<UpdateCommentAutomationData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<UpdateCommentAutomationResponse, unknown, ThrowOnError>;
941
941
  deleteCommentAutomation: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<DeleteCommentAutomationData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<unknown, DeleteCommentAutomationError, ThrowOnError>;
942
942
  listCommentAutomationLogs: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<ListCommentAutomationLogsData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<ListCommentAutomationLogsResponse, ListCommentAutomationLogsError, ThrowOnError>;
943
943
  };
@@ -9265,6 +9265,9 @@ type graduationStrategy = 'MANUAL' | 'SS_PERFORMANCE';
9265
9265
  */
9266
9266
  type KeywordEntry = string | {
9267
9267
  text: string;
9268
+ /**
9269
+ * Defaults to broad. Accepted in any case (EXACT, Exact) and stored lowercase.
9270
+ */
9268
9271
  matchType?: 'exact' | 'phrase' | 'broad';
9269
9272
  };
9270
9273
  /**
@@ -38590,6 +38593,9 @@ type ListCommentAutomationsResponse = ({
38590
38593
  * Only with matchMode=word: also fire on close misspellings of a keyword (one edit for 4-7 character keywords, two from 8 up). Keywords shorter than 4 characters are never fuzzy-matched.
38591
38594
  */
38592
38595
  typoTolerance?: boolean;
38596
+ /**
38597
+ * Instagram and Facebook only. On reply-only platforms (tiktok, threads, linkedin, youtube) every DM-leg field is omitted: dmMessage, dmMessageVariations, buttons, template, quickReplies, dmMedia, publicReplyPolicy, dedupeSameTextHours, actions, audience, followGate, dmDelaySeconds and alsoMatchInDms.
38598
+ */
38593
38599
  dmMessage?: string;
38594
38600
  /**
38595
38601
  * Inline DM buttons (up to 3). Omitted when none are set.
@@ -38773,6 +38779,9 @@ type CreateCommentAutomationResponse = ({
38773
38779
  * Only with matchMode=word: also fire on close misspellings of a keyword (one edit for 4-7 character keywords, two from 8 up). Keywords shorter than 4 characters are never fuzzy-matched.
38774
38780
  */
38775
38781
  typoTolerance?: boolean;
38782
+ /**
38783
+ * Omitted on reply-only platforms (tiktok, threads, linkedin, youtube), together with every other DM-leg field.
38784
+ */
38776
38785
  dmMessage?: string;
38777
38786
  /**
38778
38787
  * Inline DM buttons (up to 3). Omitted when none are set.
@@ -38848,6 +38857,9 @@ type GetCommentAutomationResponse = ({
38848
38857
  * Only with matchMode=word: also fire on close misspellings of a keyword (one edit for 4-7 character keywords, two from 8 up). Keywords shorter than 4 characters are never fuzzy-matched.
38849
38858
  */
38850
38859
  typoTolerance?: boolean;
38860
+ /**
38861
+ * Omitted on reply-only platforms (tiktok, threads, linkedin, youtube), together with every other DM-leg field.
38862
+ */
38851
38863
  dmMessage?: string;
38852
38864
  /**
38853
38865
  * Inline DM buttons (up to 3). Omitted when none are set.
@@ -38921,6 +38933,18 @@ type UpdateCommentAutomationData = {
38921
38933
  * Only with matchMode=word: also fire on close misspellings of a keyword (one edit for 4-7 character keywords, two from 8 up). Keywords shorter than 4 characters are never fuzzy-matched.
38922
38934
  */
38923
38935
  typoTolerance?: boolean;
38936
+ /**
38937
+ * Re-binds the automation to another post: the platform media/post ID (or story media id when trigger=story_reply). postId, platformPostId and postTitle move as a unit: sending any of them replaces all three, and an omitted one is cleared. Send all three as null (or empty) to make it account-wide (any post / any story). Omit all three to keep the current binding. 409 when another active automation already owns the new post.
38938
+ */
38939
+ platformPostId?: (string) | null;
38940
+ /**
38941
+ * Zernio post ID (24 hexadecimal characters); platform IDs return 400. Use it INSTEAD of platformPostId to bind to a not-yet-published Zernio post: the automation stays pending and arms itself when that post publishes. Moves as a unit with platformPostId and postTitle (see platformPostId).
38942
+ */
38943
+ postId?: (string) | null;
38944
+ /**
38945
+ * Post content snippet for display. Moves as a unit with platformPostId and postId (see platformPostId).
38946
+ */
38947
+ postTitle?: (string) | null;
38924
38948
  dmMessage?: string;
38925
38949
  /**
38926
38950
  * Inline DM buttons (1-3). Pass [] to clear all buttons.
@@ -39000,6 +39024,9 @@ type UpdateCommentAutomationResponse = ({
39000
39024
  * Only with matchMode=word: also fire on close misspellings of a keyword (one edit for 4-7 character keywords, two from 8 up). Keywords shorter than 4 characters are never fuzzy-matched.
39001
39025
  */
39002
39026
  typoTolerance?: boolean;
39027
+ /**
39028
+ * Omitted on reply-only platforms (tiktok, threads, linkedin, youtube), together with every other DM-leg field.
39029
+ */
39003
39030
  dmMessage?: string;
39004
39031
  /**
39005
39032
  * Inline DM buttons (up to 3). Omitted when none are set.
@@ -39037,7 +39064,7 @@ type UpdateCommentAutomationResponse = ({
39037
39064
  });
39038
39065
  type UpdateCommentAutomationError = (ErrorResponse | {
39039
39066
  error?: string;
39040
- });
39067
+ } | unknown);
39041
39068
  type DeleteCommentAutomationData = {
39042
39069
  path: {
39043
39070
  automationId: string;
@@ -39610,6 +39637,9 @@ type ListAdKeywordsData = {
39610
39637
  */
39611
39638
  campaignId?: string;
39612
39639
  limit?: number;
39640
+ /**
39641
+ * Accepted in any case.
39642
+ */
39613
39643
  matchType?: 'exact' | 'phrase' | 'broad' | 'unknown';
39614
39644
  /**
39615
39645
  * true = negative keywords only, false = positive only. Omit for both.
@@ -40253,8 +40283,14 @@ type BulkUpdateAdCampaignStatusData = {
40253
40283
  body: {
40254
40284
  status: 'active' | 'paused';
40255
40285
  campaigns: Array<{
40286
+ /**
40287
+ * The campaign id on the ad platform (e.g. the numeric Google campaign id), not a Zernio id.
40288
+ */
40256
40289
  platformCampaignId: string;
40257
- platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
40290
+ /**
40291
+ * The ad platform, e.g. `google` for Google Ads. The ads connection slug (`googleads`, `tiktokads`, ...) is accepted as an alias. `metaads` is not: send `facebook` or `instagram`.
40292
+ */
40293
+ platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'googleads' | 'tiktokads' | 'linkedinads' | 'pinterestads' | 'xads' | 'openaiads';
40258
40294
  }>;
40259
40295
  };
40260
40296
  };
@@ -41602,7 +41638,13 @@ type UpdateCampaignAssetsResponse = ({
41602
41638
  });
41603
41639
  type UpdateCampaignAssetsError = (ErrorResponse | unknown);
41604
41640
  type RemoveCampaignAssetsData = {
41605
- body: {
41641
+ path: {
41642
+ /**
41643
+ * Numeric Google platform id.
41644
+ */
41645
+ campaignId: string;
41646
+ };
41647
+ query: {
41606
41648
  /**
41607
41649
  * Zernio Google Ads connection id.
41608
41650
  */
@@ -41612,18 +41654,18 @@ type RemoveCampaignAssetsData = {
41612
41654
  */
41613
41655
  adAccountId?: string;
41614
41656
  /**
41615
- * Alias of adAccountId, kept for existing callers
41616
- * @deprecated
41657
+ * Asset resource names, retained for compatibility. Repeat the parameter or pass a comma-separated list.
41617
41658
  */
41618
- customerId?: string;
41619
41659
  assetResourceNames: Array<(string)>;
41660
+ /**
41661
+ * campaign_asset resource names to remove, e.g. customers/1234567890/campaignAssets/456~123~CALLOUT. Repeat the parameter or pass a comma-separated list.
41662
+ */
41620
41663
  campaignAssetResourceNames: Array<(string)>;
41621
- };
41622
- path: {
41623
41664
  /**
41624
- * Numeric Google platform id.
41665
+ * Alias of adAccountId, kept for existing callers
41666
+ * @deprecated
41625
41667
  */
41626
- campaignId: string;
41668
+ customerId?: string;
41627
41669
  };
41628
41670
  };
41629
41671
  type RemoveCampaignAssetsResponse = ({
@@ -41739,7 +41781,13 @@ type UpdateAdGroupAssetsResponse = ({
41739
41781
  });
41740
41782
  type UpdateAdGroupAssetsError = (ErrorResponse | unknown);
41741
41783
  type RemoveAdGroupAssetsData = {
41742
- body: {
41784
+ path: {
41785
+ /**
41786
+ * Numeric Google platform id.
41787
+ */
41788
+ adSetId: string;
41789
+ };
41790
+ query: {
41743
41791
  /**
41744
41792
  * Zernio Google Ads connection id.
41745
41793
  */
@@ -41749,18 +41797,18 @@ type RemoveAdGroupAssetsData = {
41749
41797
  */
41750
41798
  adAccountId?: string;
41751
41799
  /**
41752
- * Alias of adAccountId, kept for existing callers
41753
- * @deprecated
41800
+ * ad_group_asset resource names to remove, e.g. customers/1234567890/adGroupAssets/456~123~CALLOUT. Repeat the parameter or pass a comma-separated list.
41754
41801
  */
41755
- customerId?: string;
41756
- assetResourceNames: Array<(string)>;
41757
41802
  adGroupAssetResourceNames: Array<(string)>;
41758
- };
41759
- path: {
41760
41803
  /**
41761
- * Numeric Google platform id.
41804
+ * Asset resource names, retained for compatibility. Repeat the parameter or pass a comma-separated list.
41762
41805
  */
41763
- adSetId: string;
41806
+ assetResourceNames: Array<(string)>;
41807
+ /**
41808
+ * Alias of adAccountId, kept for existing callers
41809
+ * @deprecated
41810
+ */
41811
+ customerId?: string;
41764
41812
  };
41765
41813
  };
41766
41814
  type RemoveAdGroupAssetsResponse = ({
@@ -43429,13 +43477,43 @@ type AttachAdLabelResponse = ({
43429
43477
  });
43430
43478
  type AttachAdLabelError = (ErrorResponse | unknown);
43431
43479
  type DetachAdLabelData = {
43432
- body: GoogleAdLabelAssignments;
43433
43480
  path: {
43434
43481
  /**
43435
43482
  * Google label id
43436
43483
  */
43437
43484
  labelId: string;
43438
43485
  };
43486
+ query: {
43487
+ /**
43488
+ * Zernio Google Ads connection id.
43489
+ */
43490
+ accountId: string;
43491
+ /**
43492
+ * Platform ad account ID (Google customer ID, digits only). Required when the connection has multiple customers.
43493
+ */
43494
+ adAccountId?: string;
43495
+ /**
43496
+ * Google ad group ad ids, {adGroupId}~{adId}. Repeat the parameter or pass a comma-separated list.
43497
+ */
43498
+ adIds?: Array<(string)>;
43499
+ /**
43500
+ * Google ad group ids. Repeat the parameter or pass a comma-separated list.
43501
+ */
43502
+ adSetIds?: Array<(string)>;
43503
+ /**
43504
+ * Google campaign ids. Repeat the parameter or pass a comma-separated list.
43505
+ */
43506
+ campaignIds?: Array<(string)>;
43507
+ /**
43508
+ * Alias of adAccountId, kept for existing callers
43509
+ * @deprecated
43510
+ */
43511
+ customerId?: string;
43512
+ /**
43513
+ * Google keyword criterion ids, {adGroupId}~{criterionId}. Repeat the parameter or pass a comma-separated list.
43514
+ */
43515
+ keywordIds?: Array<(string)>;
43516
+ };
43439
43517
  };
43440
43518
  type DetachAdLabelResponse = ({
43441
43519
  customerId?: string;
@@ -44174,7 +44252,7 @@ type UpdateAccountCalloutsResponse = ({
44174
44252
  });
44175
44253
  type UpdateAccountCalloutsError = (ErrorResponse | unknown);
44176
44254
  type RemoveAccountCalloutData = {
44177
- body: {
44255
+ query: {
44178
44256
  /**
44179
44257
  * Zernio Google Ads connection id.
44180
44258
  */
@@ -44183,12 +44261,15 @@ type RemoveAccountCalloutData = {
44183
44261
  * Platform ad account ID (Google customer ID, digits only). Required when the connection has multiple customers.
44184
44262
  */
44185
44263
  adAccountId?: string;
44264
+ /**
44265
+ * Numeric Google Ads asset id.
44266
+ */
44267
+ assetId: string;
44186
44268
  /**
44187
44269
  * Alias of adAccountId, kept for existing callers
44188
44270
  * @deprecated
44189
44271
  */
44190
44272
  customerId?: string;
44191
- assetId: string;
44192
44273
  };
44193
44274
  };
44194
44275
  type RemoveAccountCalloutResponse = ({
@@ -44296,7 +44377,7 @@ type UpdateAccountSitelinksResponse = ({
44296
44377
  });
44297
44378
  type UpdateAccountSitelinksError = (ErrorResponse | unknown);
44298
44379
  type RemoveAccountSitelinkData = {
44299
- body: {
44380
+ query: {
44300
44381
  /**
44301
44382
  * Zernio Google Ads connection id.
44302
44383
  */
@@ -44305,12 +44386,15 @@ type RemoveAccountSitelinkData = {
44305
44386
  * Platform ad account ID (Google customer ID, digits only). Required when the connection has multiple customers.
44306
44387
  */
44307
44388
  adAccountId?: string;
44389
+ /**
44390
+ * Numeric Google Ads asset id.
44391
+ */
44392
+ assetId: string;
44308
44393
  /**
44309
44394
  * Alias of adAccountId, kept for existing callers
44310
44395
  * @deprecated
44311
44396
  */
44312
44397
  customerId?: string;
44313
- assetId: string;
44314
44398
  };
44315
44399
  };
44316
44400
  type RemoveAccountSitelinkResponse = ({
@@ -44405,7 +44489,7 @@ type UpdateAccountStructuredSnippetsResponse = ({
44405
44489
  });
44406
44490
  type UpdateAccountStructuredSnippetsError = (ErrorResponse | unknown);
44407
44491
  type RemoveAccountStructuredSnippetData = {
44408
- body: {
44492
+ query: {
44409
44493
  /**
44410
44494
  * Zernio Google Ads connection id.
44411
44495
  */
@@ -44414,12 +44498,15 @@ type RemoveAccountStructuredSnippetData = {
44414
44498
  * Platform ad account ID (Google customer ID, digits only). Required when the connection has multiple customers.
44415
44499
  */
44416
44500
  adAccountId?: string;
44501
+ /**
44502
+ * Numeric Google Ads asset id.
44503
+ */
44504
+ assetId: string;
44417
44505
  /**
44418
44506
  * Alias of adAccountId, kept for existing callers
44419
44507
  * @deprecated
44420
44508
  */
44421
44509
  customerId?: string;
44422
- assetId: string;
44423
44510
  };
44424
44511
  };
44425
44512
  type RemoveAccountStructuredSnippetResponse = ({
@@ -46196,15 +46283,18 @@ type CreateStandaloneAdData = {
46196
46283
  * budget and schedule are inherited (passing those fields
46197
46284
  * returns 400).
46198
46285
  *
46199
- * On Google Ads the `adSetId` is the AD GROUP id. `goal` is
46200
- * still REQUIRED even though budget and targeting are
46201
- * inherited from the ad group. Send `campaignType: "search"`
46202
- * to attach into a Search ad group, including one created by
46203
- * `POST /v1/ads/ad-sets` (always SEARCH_STANDARD): without it
46204
- * the request is treated as Display and requires
46205
- * `images.landscape` + `images.square` + `businessName`, and
46206
- * the resulting display creative does not match a Search ad
46207
- * group.
46286
+ * On Google Ads the `adSetId` is the AD GROUP id (numeric). `goal`
46287
+ * is not required: the ad group keeps its campaign's bidding,
46288
+ * budget and targeting. `campaignType` is read from the ad group's
46289
+ * campaign (Search, Display or Demand Gen), so it can be omitted;
46290
+ * a `campaignType` that contradicts the ad group returns 400, an
46291
+ * ad group Google does not know in that customer returns 404, and
46292
+ * any other campaign type returns 422. A Search ad needs
46293
+ * `headline` + `body` + `linkUrl`; a Display ad also needs
46294
+ * `images.landscape` + `images.square` + `businessName`. Google
46295
+ * allows 3 responsive search ads per ad group: a fourth returns
46296
+ * 422 naming the limit (`RESPONSIVE_SEARCH_ADS_PER_AD_GROUP`) and
46297
+ * the ad group.
46208
46298
  * `budgetAmount`/`budgetType` and bidding fields
46209
46299
  * (`bidStrategy`, `bidAmount`, `portfolioBidStrategyId`)
46210
46300
  * return 400 on this shape; the ad group already owns them.
@@ -46726,7 +46816,7 @@ type CreateStandaloneAdData = {
46726
46816
  */
46727
46817
  audienceId?: string;
46728
46818
  /**
46729
- * Google only. Performance Max requires assetGroup and Demand Gen requires demandGen; both are always created PAUSED.
46819
+ * Google only. Performance Max requires assetGroup and Demand Gen requires demandGen; both are always created PAUSED. With `adSetId` it defaults to the ad group's own campaign type instead of display.
46730
46820
  */
46731
46821
  campaignType?: 'display' | 'search' | 'pmax' | 'demand_gen';
46732
46822
  /**
@@ -46748,11 +46838,11 @@ type CreateStandaloneAdData = {
46748
46838
  */
46749
46839
  campaignNegativeKeywords?: Array<KeywordEntry>;
46750
46840
  /**
46751
- * Google Search RSA only. Extra text assets as strings or objects with text and optional pinnedField. Existing string input remains supported. The effective create lists, including primary text and deduplication, must contain 3-15 headlines and 2-4 descriptions; excess entries return 400.
46841
+ * Google Search RSA only. Extra text assets as strings or objects with text and optional pinnedField. Existing string input remains supported. The effective create lists, including primary text and deduplication, must contain 3-15 headlines and 2-4 descriptions; excess entries return 400. Each headline is at most 30 characters (Google's limit): a longer one returns 400 naming the field and index (e.g. `additionalHeadlines[2]`), it is never truncated. On Search the same limit applies to `headline` and `longHeadline` (30) and to `body` (90).
46752
46842
  */
46753
46843
  additionalHeadlines?: Array<(string | GoogleRsaHeadline)>;
46754
46844
  /**
46755
- * Google Search RSA only. Extra text assets as strings or objects with text and optional pinnedField. Existing string input remains supported. The effective create lists, including primary text and deduplication, must contain 3-15 headlines and 2-4 descriptions; excess entries return 400.
46845
+ * Google Search RSA only. Extra text assets as strings or objects with text and optional pinnedField. Existing string input remains supported. The effective create lists, including primary text and deduplication, must contain 3-15 headlines and 2-4 descriptions; excess entries return 400. Each description is at most 90 characters (Google's limit): a longer one returns 400 naming the field and index (e.g. `additionalDescriptions[2]`), it is never truncated. On Search the same limit applies to `headline` and `longHeadline` (30) and to `body` (90).
46756
46846
  */
46757
46847
  additionalDescriptions?: Array<(string | GoogleRsaDescription)>;
46758
46848
  /**
package/dist/index.d.ts CHANGED
@@ -937,7 +937,7 @@ declare class Zernio {
937
937
  listCommentAutomations: <ThrowOnError extends boolean = false>(options?: _hey_api_client_fetch.OptionsLegacyParser<ListCommentAutomationsData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<ListCommentAutomationsResponse, unknown, ThrowOnError>;
938
938
  createCommentAutomation: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<CreateCommentAutomationData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<CreateCommentAutomationResponse, unknown, ThrowOnError>;
939
939
  getCommentAutomation: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<GetCommentAutomationData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<GetCommentAutomationResponse, GetCommentAutomationError, ThrowOnError>;
940
- updateCommentAutomation: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<UpdateCommentAutomationData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<UpdateCommentAutomationResponse, UpdateCommentAutomationError, ThrowOnError>;
940
+ updateCommentAutomation: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<UpdateCommentAutomationData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<UpdateCommentAutomationResponse, unknown, ThrowOnError>;
941
941
  deleteCommentAutomation: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<DeleteCommentAutomationData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<unknown, DeleteCommentAutomationError, ThrowOnError>;
942
942
  listCommentAutomationLogs: <ThrowOnError extends boolean = false>(options: _hey_api_client_fetch.OptionsLegacyParser<ListCommentAutomationLogsData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<ListCommentAutomationLogsResponse, ListCommentAutomationLogsError, ThrowOnError>;
943
943
  };
@@ -9265,6 +9265,9 @@ type graduationStrategy = 'MANUAL' | 'SS_PERFORMANCE';
9265
9265
  */
9266
9266
  type KeywordEntry = string | {
9267
9267
  text: string;
9268
+ /**
9269
+ * Defaults to broad. Accepted in any case (EXACT, Exact) and stored lowercase.
9270
+ */
9268
9271
  matchType?: 'exact' | 'phrase' | 'broad';
9269
9272
  };
9270
9273
  /**
@@ -38590,6 +38593,9 @@ type ListCommentAutomationsResponse = ({
38590
38593
  * Only with matchMode=word: also fire on close misspellings of a keyword (one edit for 4-7 character keywords, two from 8 up). Keywords shorter than 4 characters are never fuzzy-matched.
38591
38594
  */
38592
38595
  typoTolerance?: boolean;
38596
+ /**
38597
+ * Instagram and Facebook only. On reply-only platforms (tiktok, threads, linkedin, youtube) every DM-leg field is omitted: dmMessage, dmMessageVariations, buttons, template, quickReplies, dmMedia, publicReplyPolicy, dedupeSameTextHours, actions, audience, followGate, dmDelaySeconds and alsoMatchInDms.
38598
+ */
38593
38599
  dmMessage?: string;
38594
38600
  /**
38595
38601
  * Inline DM buttons (up to 3). Omitted when none are set.
@@ -38773,6 +38779,9 @@ type CreateCommentAutomationResponse = ({
38773
38779
  * Only with matchMode=word: also fire on close misspellings of a keyword (one edit for 4-7 character keywords, two from 8 up). Keywords shorter than 4 characters are never fuzzy-matched.
38774
38780
  */
38775
38781
  typoTolerance?: boolean;
38782
+ /**
38783
+ * Omitted on reply-only platforms (tiktok, threads, linkedin, youtube), together with every other DM-leg field.
38784
+ */
38776
38785
  dmMessage?: string;
38777
38786
  /**
38778
38787
  * Inline DM buttons (up to 3). Omitted when none are set.
@@ -38848,6 +38857,9 @@ type GetCommentAutomationResponse = ({
38848
38857
  * Only with matchMode=word: also fire on close misspellings of a keyword (one edit for 4-7 character keywords, two from 8 up). Keywords shorter than 4 characters are never fuzzy-matched.
38849
38858
  */
38850
38859
  typoTolerance?: boolean;
38860
+ /**
38861
+ * Omitted on reply-only platforms (tiktok, threads, linkedin, youtube), together with every other DM-leg field.
38862
+ */
38851
38863
  dmMessage?: string;
38852
38864
  /**
38853
38865
  * Inline DM buttons (up to 3). Omitted when none are set.
@@ -38921,6 +38933,18 @@ type UpdateCommentAutomationData = {
38921
38933
  * Only with matchMode=word: also fire on close misspellings of a keyword (one edit for 4-7 character keywords, two from 8 up). Keywords shorter than 4 characters are never fuzzy-matched.
38922
38934
  */
38923
38935
  typoTolerance?: boolean;
38936
+ /**
38937
+ * Re-binds the automation to another post: the platform media/post ID (or story media id when trigger=story_reply). postId, platformPostId and postTitle move as a unit: sending any of them replaces all three, and an omitted one is cleared. Send all three as null (or empty) to make it account-wide (any post / any story). Omit all three to keep the current binding. 409 when another active automation already owns the new post.
38938
+ */
38939
+ platformPostId?: (string) | null;
38940
+ /**
38941
+ * Zernio post ID (24 hexadecimal characters); platform IDs return 400. Use it INSTEAD of platformPostId to bind to a not-yet-published Zernio post: the automation stays pending and arms itself when that post publishes. Moves as a unit with platformPostId and postTitle (see platformPostId).
38942
+ */
38943
+ postId?: (string) | null;
38944
+ /**
38945
+ * Post content snippet for display. Moves as a unit with platformPostId and postId (see platformPostId).
38946
+ */
38947
+ postTitle?: (string) | null;
38924
38948
  dmMessage?: string;
38925
38949
  /**
38926
38950
  * Inline DM buttons (1-3). Pass [] to clear all buttons.
@@ -39000,6 +39024,9 @@ type UpdateCommentAutomationResponse = ({
39000
39024
  * Only with matchMode=word: also fire on close misspellings of a keyword (one edit for 4-7 character keywords, two from 8 up). Keywords shorter than 4 characters are never fuzzy-matched.
39001
39025
  */
39002
39026
  typoTolerance?: boolean;
39027
+ /**
39028
+ * Omitted on reply-only platforms (tiktok, threads, linkedin, youtube), together with every other DM-leg field.
39029
+ */
39003
39030
  dmMessage?: string;
39004
39031
  /**
39005
39032
  * Inline DM buttons (up to 3). Omitted when none are set.
@@ -39037,7 +39064,7 @@ type UpdateCommentAutomationResponse = ({
39037
39064
  });
39038
39065
  type UpdateCommentAutomationError = (ErrorResponse | {
39039
39066
  error?: string;
39040
- });
39067
+ } | unknown);
39041
39068
  type DeleteCommentAutomationData = {
39042
39069
  path: {
39043
39070
  automationId: string;
@@ -39610,6 +39637,9 @@ type ListAdKeywordsData = {
39610
39637
  */
39611
39638
  campaignId?: string;
39612
39639
  limit?: number;
39640
+ /**
39641
+ * Accepted in any case.
39642
+ */
39613
39643
  matchType?: 'exact' | 'phrase' | 'broad' | 'unknown';
39614
39644
  /**
39615
39645
  * true = negative keywords only, false = positive only. Omit for both.
@@ -40253,8 +40283,14 @@ type BulkUpdateAdCampaignStatusData = {
40253
40283
  body: {
40254
40284
  status: 'active' | 'paused';
40255
40285
  campaigns: Array<{
40286
+ /**
40287
+ * The campaign id on the ad platform (e.g. the numeric Google campaign id), not a Zernio id.
40288
+ */
40256
40289
  platformCampaignId: string;
40257
- platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
40290
+ /**
40291
+ * The ad platform, e.g. `google` for Google Ads. The ads connection slug (`googleads`, `tiktokads`, ...) is accepted as an alias. `metaads` is not: send `facebook` or `instagram`.
40292
+ */
40293
+ platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'googleads' | 'tiktokads' | 'linkedinads' | 'pinterestads' | 'xads' | 'openaiads';
40258
40294
  }>;
40259
40295
  };
40260
40296
  };
@@ -41602,7 +41638,13 @@ type UpdateCampaignAssetsResponse = ({
41602
41638
  });
41603
41639
  type UpdateCampaignAssetsError = (ErrorResponse | unknown);
41604
41640
  type RemoveCampaignAssetsData = {
41605
- body: {
41641
+ path: {
41642
+ /**
41643
+ * Numeric Google platform id.
41644
+ */
41645
+ campaignId: string;
41646
+ };
41647
+ query: {
41606
41648
  /**
41607
41649
  * Zernio Google Ads connection id.
41608
41650
  */
@@ -41612,18 +41654,18 @@ type RemoveCampaignAssetsData = {
41612
41654
  */
41613
41655
  adAccountId?: string;
41614
41656
  /**
41615
- * Alias of adAccountId, kept for existing callers
41616
- * @deprecated
41657
+ * Asset resource names, retained for compatibility. Repeat the parameter or pass a comma-separated list.
41617
41658
  */
41618
- customerId?: string;
41619
41659
  assetResourceNames: Array<(string)>;
41660
+ /**
41661
+ * campaign_asset resource names to remove, e.g. customers/1234567890/campaignAssets/456~123~CALLOUT. Repeat the parameter or pass a comma-separated list.
41662
+ */
41620
41663
  campaignAssetResourceNames: Array<(string)>;
41621
- };
41622
- path: {
41623
41664
  /**
41624
- * Numeric Google platform id.
41665
+ * Alias of adAccountId, kept for existing callers
41666
+ * @deprecated
41625
41667
  */
41626
- campaignId: string;
41668
+ customerId?: string;
41627
41669
  };
41628
41670
  };
41629
41671
  type RemoveCampaignAssetsResponse = ({
@@ -41739,7 +41781,13 @@ type UpdateAdGroupAssetsResponse = ({
41739
41781
  });
41740
41782
  type UpdateAdGroupAssetsError = (ErrorResponse | unknown);
41741
41783
  type RemoveAdGroupAssetsData = {
41742
- body: {
41784
+ path: {
41785
+ /**
41786
+ * Numeric Google platform id.
41787
+ */
41788
+ adSetId: string;
41789
+ };
41790
+ query: {
41743
41791
  /**
41744
41792
  * Zernio Google Ads connection id.
41745
41793
  */
@@ -41749,18 +41797,18 @@ type RemoveAdGroupAssetsData = {
41749
41797
  */
41750
41798
  adAccountId?: string;
41751
41799
  /**
41752
- * Alias of adAccountId, kept for existing callers
41753
- * @deprecated
41800
+ * ad_group_asset resource names to remove, e.g. customers/1234567890/adGroupAssets/456~123~CALLOUT. Repeat the parameter or pass a comma-separated list.
41754
41801
  */
41755
- customerId?: string;
41756
- assetResourceNames: Array<(string)>;
41757
41802
  adGroupAssetResourceNames: Array<(string)>;
41758
- };
41759
- path: {
41760
41803
  /**
41761
- * Numeric Google platform id.
41804
+ * Asset resource names, retained for compatibility. Repeat the parameter or pass a comma-separated list.
41762
41805
  */
41763
- adSetId: string;
41806
+ assetResourceNames: Array<(string)>;
41807
+ /**
41808
+ * Alias of adAccountId, kept for existing callers
41809
+ * @deprecated
41810
+ */
41811
+ customerId?: string;
41764
41812
  };
41765
41813
  };
41766
41814
  type RemoveAdGroupAssetsResponse = ({
@@ -43429,13 +43477,43 @@ type AttachAdLabelResponse = ({
43429
43477
  });
43430
43478
  type AttachAdLabelError = (ErrorResponse | unknown);
43431
43479
  type DetachAdLabelData = {
43432
- body: GoogleAdLabelAssignments;
43433
43480
  path: {
43434
43481
  /**
43435
43482
  * Google label id
43436
43483
  */
43437
43484
  labelId: string;
43438
43485
  };
43486
+ query: {
43487
+ /**
43488
+ * Zernio Google Ads connection id.
43489
+ */
43490
+ accountId: string;
43491
+ /**
43492
+ * Platform ad account ID (Google customer ID, digits only). Required when the connection has multiple customers.
43493
+ */
43494
+ adAccountId?: string;
43495
+ /**
43496
+ * Google ad group ad ids, {adGroupId}~{adId}. Repeat the parameter or pass a comma-separated list.
43497
+ */
43498
+ adIds?: Array<(string)>;
43499
+ /**
43500
+ * Google ad group ids. Repeat the parameter or pass a comma-separated list.
43501
+ */
43502
+ adSetIds?: Array<(string)>;
43503
+ /**
43504
+ * Google campaign ids. Repeat the parameter or pass a comma-separated list.
43505
+ */
43506
+ campaignIds?: Array<(string)>;
43507
+ /**
43508
+ * Alias of adAccountId, kept for existing callers
43509
+ * @deprecated
43510
+ */
43511
+ customerId?: string;
43512
+ /**
43513
+ * Google keyword criterion ids, {adGroupId}~{criterionId}. Repeat the parameter or pass a comma-separated list.
43514
+ */
43515
+ keywordIds?: Array<(string)>;
43516
+ };
43439
43517
  };
43440
43518
  type DetachAdLabelResponse = ({
43441
43519
  customerId?: string;
@@ -44174,7 +44252,7 @@ type UpdateAccountCalloutsResponse = ({
44174
44252
  });
44175
44253
  type UpdateAccountCalloutsError = (ErrorResponse | unknown);
44176
44254
  type RemoveAccountCalloutData = {
44177
- body: {
44255
+ query: {
44178
44256
  /**
44179
44257
  * Zernio Google Ads connection id.
44180
44258
  */
@@ -44183,12 +44261,15 @@ type RemoveAccountCalloutData = {
44183
44261
  * Platform ad account ID (Google customer ID, digits only). Required when the connection has multiple customers.
44184
44262
  */
44185
44263
  adAccountId?: string;
44264
+ /**
44265
+ * Numeric Google Ads asset id.
44266
+ */
44267
+ assetId: string;
44186
44268
  /**
44187
44269
  * Alias of adAccountId, kept for existing callers
44188
44270
  * @deprecated
44189
44271
  */
44190
44272
  customerId?: string;
44191
- assetId: string;
44192
44273
  };
44193
44274
  };
44194
44275
  type RemoveAccountCalloutResponse = ({
@@ -44296,7 +44377,7 @@ type UpdateAccountSitelinksResponse = ({
44296
44377
  });
44297
44378
  type UpdateAccountSitelinksError = (ErrorResponse | unknown);
44298
44379
  type RemoveAccountSitelinkData = {
44299
- body: {
44380
+ query: {
44300
44381
  /**
44301
44382
  * Zernio Google Ads connection id.
44302
44383
  */
@@ -44305,12 +44386,15 @@ type RemoveAccountSitelinkData = {
44305
44386
  * Platform ad account ID (Google customer ID, digits only). Required when the connection has multiple customers.
44306
44387
  */
44307
44388
  adAccountId?: string;
44389
+ /**
44390
+ * Numeric Google Ads asset id.
44391
+ */
44392
+ assetId: string;
44308
44393
  /**
44309
44394
  * Alias of adAccountId, kept for existing callers
44310
44395
  * @deprecated
44311
44396
  */
44312
44397
  customerId?: string;
44313
- assetId: string;
44314
44398
  };
44315
44399
  };
44316
44400
  type RemoveAccountSitelinkResponse = ({
@@ -44405,7 +44489,7 @@ type UpdateAccountStructuredSnippetsResponse = ({
44405
44489
  });
44406
44490
  type UpdateAccountStructuredSnippetsError = (ErrorResponse | unknown);
44407
44491
  type RemoveAccountStructuredSnippetData = {
44408
- body: {
44492
+ query: {
44409
44493
  /**
44410
44494
  * Zernio Google Ads connection id.
44411
44495
  */
@@ -44414,12 +44498,15 @@ type RemoveAccountStructuredSnippetData = {
44414
44498
  * Platform ad account ID (Google customer ID, digits only). Required when the connection has multiple customers.
44415
44499
  */
44416
44500
  adAccountId?: string;
44501
+ /**
44502
+ * Numeric Google Ads asset id.
44503
+ */
44504
+ assetId: string;
44417
44505
  /**
44418
44506
  * Alias of adAccountId, kept for existing callers
44419
44507
  * @deprecated
44420
44508
  */
44421
44509
  customerId?: string;
44422
- assetId: string;
44423
44510
  };
44424
44511
  };
44425
44512
  type RemoveAccountStructuredSnippetResponse = ({
@@ -46196,15 +46283,18 @@ type CreateStandaloneAdData = {
46196
46283
  * budget and schedule are inherited (passing those fields
46197
46284
  * returns 400).
46198
46285
  *
46199
- * On Google Ads the `adSetId` is the AD GROUP id. `goal` is
46200
- * still REQUIRED even though budget and targeting are
46201
- * inherited from the ad group. Send `campaignType: "search"`
46202
- * to attach into a Search ad group, including one created by
46203
- * `POST /v1/ads/ad-sets` (always SEARCH_STANDARD): without it
46204
- * the request is treated as Display and requires
46205
- * `images.landscape` + `images.square` + `businessName`, and
46206
- * the resulting display creative does not match a Search ad
46207
- * group.
46286
+ * On Google Ads the `adSetId` is the AD GROUP id (numeric). `goal`
46287
+ * is not required: the ad group keeps its campaign's bidding,
46288
+ * budget and targeting. `campaignType` is read from the ad group's
46289
+ * campaign (Search, Display or Demand Gen), so it can be omitted;
46290
+ * a `campaignType` that contradicts the ad group returns 400, an
46291
+ * ad group Google does not know in that customer returns 404, and
46292
+ * any other campaign type returns 422. A Search ad needs
46293
+ * `headline` + `body` + `linkUrl`; a Display ad also needs
46294
+ * `images.landscape` + `images.square` + `businessName`. Google
46295
+ * allows 3 responsive search ads per ad group: a fourth returns
46296
+ * 422 naming the limit (`RESPONSIVE_SEARCH_ADS_PER_AD_GROUP`) and
46297
+ * the ad group.
46208
46298
  * `budgetAmount`/`budgetType` and bidding fields
46209
46299
  * (`bidStrategy`, `bidAmount`, `portfolioBidStrategyId`)
46210
46300
  * return 400 on this shape; the ad group already owns them.
@@ -46726,7 +46816,7 @@ type CreateStandaloneAdData = {
46726
46816
  */
46727
46817
  audienceId?: string;
46728
46818
  /**
46729
- * Google only. Performance Max requires assetGroup and Demand Gen requires demandGen; both are always created PAUSED.
46819
+ * Google only. Performance Max requires assetGroup and Demand Gen requires demandGen; both are always created PAUSED. With `adSetId` it defaults to the ad group's own campaign type instead of display.
46730
46820
  */
46731
46821
  campaignType?: 'display' | 'search' | 'pmax' | 'demand_gen';
46732
46822
  /**
@@ -46748,11 +46838,11 @@ type CreateStandaloneAdData = {
46748
46838
  */
46749
46839
  campaignNegativeKeywords?: Array<KeywordEntry>;
46750
46840
  /**
46751
- * Google Search RSA only. Extra text assets as strings or objects with text and optional pinnedField. Existing string input remains supported. The effective create lists, including primary text and deduplication, must contain 3-15 headlines and 2-4 descriptions; excess entries return 400.
46841
+ * Google Search RSA only. Extra text assets as strings or objects with text and optional pinnedField. Existing string input remains supported. The effective create lists, including primary text and deduplication, must contain 3-15 headlines and 2-4 descriptions; excess entries return 400. Each headline is at most 30 characters (Google's limit): a longer one returns 400 naming the field and index (e.g. `additionalHeadlines[2]`), it is never truncated. On Search the same limit applies to `headline` and `longHeadline` (30) and to `body` (90).
46752
46842
  */
46753
46843
  additionalHeadlines?: Array<(string | GoogleRsaHeadline)>;
46754
46844
  /**
46755
- * Google Search RSA only. Extra text assets as strings or objects with text and optional pinnedField. Existing string input remains supported. The effective create lists, including primary text and deduplication, must contain 3-15 headlines and 2-4 descriptions; excess entries return 400.
46845
+ * Google Search RSA only. Extra text assets as strings or objects with text and optional pinnedField. Existing string input remains supported. The effective create lists, including primary text and deduplication, must contain 3-15 headlines and 2-4 descriptions; excess entries return 400. Each description is at most 90 characters (Google's limit): a longer one returns 400 naming the field and index (e.g. `additionalDescriptions[2]`), it is never truncated. On Search the same limit applies to `headline` and `longHeadline` (30) and to `body` (90).
46756
46846
  */
46757
46847
  additionalDescriptions?: Array<(string | GoogleRsaDescription)>;
46758
46848
  /**
package/dist/index.js CHANGED
@@ -36,7 +36,7 @@ module.exports = __toCommonJS(index_exports);
36
36
  // package.json
37
37
  var package_default = {
38
38
  name: "@getlatedev/node",
39
- version: "0.2.1106",
39
+ version: "0.2.1108",
40
40
  description: "The official Node.js library for the Zernio API",
41
41
  main: "dist/index.js",
42
42
  module: "dist/index.mjs",
package/dist/index.mjs CHANGED
@@ -5,7 +5,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
5
5
  // package.json
6
6
  var package_default = {
7
7
  name: "@getlatedev/node",
8
- version: "0.2.1106",
8
+ version: "0.2.1108",
9
9
  description: "The official Node.js library for the Zernio API",
10
10
  main: "dist/index.js",
11
11
  module: "dist/index.mjs",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getlatedev/node",
3
- "version": "0.2.1106",
3
+ "version": "0.2.1108",
4
4
  "description": "The official Node.js library for the Zernio API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -9369,7 +9369,7 @@ export const getCommentAutomation = <ThrowOnError extends boolean = false>(optio
9369
9369
 
9370
9370
  /**
9371
9371
  * Update automation settings
9372
- * Update an automation's keywords, DM message, inline buttons, comment reply, or active status.
9372
+ * Update an automation's keywords, DM message, inline buttons, comment reply, post binding, or active status.
9373
9373
  * Pass `buttons: []` to clear all buttons. When `buttons` is non-empty, `dmMessage` (the new
9374
9374
  * one if you're changing it, otherwise the stored one) must be 640 characters or less.
9375
9375
  * On a TikTok, Threads, LinkedIn or YouTube automation (public reply only) the DM fields
@@ -10524,7 +10524,7 @@ export const updateCampaignAssets = <ThrowOnError extends boolean = false>(optio
10524
10524
 
10525
10525
  /**
10526
10526
  * Remove campaign assets
10527
- * Removes the specified attachments only. Google assets cannot be deleted. Other attachments remain. assetResourceNames is retained for compatibility.
10527
+ * Removes the specified attachments only. Google assets cannot be deleted. Other attachments remain. assetResourceNames is retained for compatibility. Fields go in the query string. A JSON body with the same fields is also accepted and, when sent, the query string is ignored.
10528
10528
  */
10529
10529
  export const removeCampaignAssets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveCampaignAssetsData, ThrowOnError>) => {
10530
10530
  return (options?.client ?? client).delete<RemoveCampaignAssetsResponse, RemoveCampaignAssetsError, ThrowOnError>({
@@ -10568,7 +10568,7 @@ export const updateAdGroupAssets = <ThrowOnError extends boolean = false>(option
10568
10568
 
10569
10569
  /**
10570
10570
  * Remove ad-group assets
10571
- * Removes the specified attachments only. Google assets cannot be deleted. Other attachments remain. assetResourceNames is retained for compatibility.
10571
+ * Removes the specified attachments only. Google assets cannot be deleted. Other attachments remain. assetResourceNames is retained for compatibility. Fields go in the query string. A JSON body with the same fields is also accepted and, when sent, the query string is ignored.
10572
10572
  */
10573
10573
  export const removeAdGroupAssets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveAdGroupAssetsData, ThrowOnError>) => {
10574
10574
  return (options?.client ?? client).delete<RemoveAdGroupAssetsResponse, RemoveAdGroupAssetsError, ThrowOnError>({
@@ -10822,6 +10822,8 @@ export const getAdTrackingTags = <ThrowOnError extends boolean = false>(options:
10822
10822
  * / dark / asset_feed creatives whose object_story_spec Meta strips (those return 422 asking for
10823
10823
  * `creative`).
10824
10824
  * - Google: `trackingUrlTemplate` and/or `finalUrlSuffix` (full template strings; account quota applies).
10825
+ * Written at the CAMPAIGN level (the campaign's `tracking_url_template` / `final_url_suffix`), so
10826
+ * the change applies to every ad in the ad's campaign.
10825
10827
  * - LinkedIn: `dynamicValueParameters` and/or `customValueParameters` (campaign-level Dynamic UTM).
10826
10828
  *
10827
10829
  */
@@ -11267,7 +11269,7 @@ export const attachAdLabel = <ThrowOnError extends boolean = false>(options: Opt
11267
11269
 
11268
11270
  /**
11269
11271
  * Detach a Google Ads label
11270
- * Removes the label from the given targets. Idempotent; a target without the label is counted in `unchanged`.
11272
+ * Removes the label from the given targets. Idempotent; a target without the label is counted in `unchanged`. Fields go in the query string. A JSON body with the same fields is also accepted and, when sent, the query string is ignored.
11271
11273
  */
11272
11274
  export const detachAdLabel = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DetachAdLabelData, ThrowOnError>) => {
11273
11275
  return (options?.client ?? client).delete<DetachAdLabelResponse, DetachAdLabelError, ThrowOnError>({
@@ -11624,7 +11626,7 @@ export const updateAccountCallouts = <ThrowOnError extends boolean = false>(opti
11624
11626
 
11625
11627
  /**
11626
11628
  * Remove account callout
11627
- * Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain.
11629
+ * Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain. Fields go in the query string. A JSON body with the same fields is also accepted and, when sent, the query string is ignored.
11628
11630
  */
11629
11631
  export const removeAccountCallout = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveAccountCalloutData, ThrowOnError>) => {
11630
11632
  return (options?.client ?? client).delete<RemoveAccountCalloutResponse, RemoveAccountCalloutError, ThrowOnError>({
@@ -11668,7 +11670,7 @@ export const updateAccountSitelinks = <ThrowOnError extends boolean = false>(opt
11668
11670
 
11669
11671
  /**
11670
11672
  * Remove account sitelink
11671
- * Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain.
11673
+ * Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain. Fields go in the query string. A JSON body with the same fields is also accepted and, when sent, the query string is ignored.
11672
11674
  */
11673
11675
  export const removeAccountSitelink = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveAccountSitelinkData, ThrowOnError>) => {
11674
11676
  return (options?.client ?? client).delete<RemoveAccountSitelinkResponse, RemoveAccountSitelinkError, ThrowOnError>({
@@ -11712,7 +11714,7 @@ export const updateAccountStructuredSnippets = <ThrowOnError extends boolean = f
11712
11714
 
11713
11715
  /**
11714
11716
  * Remove account snippet
11715
- * Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain.
11717
+ * Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain. Fields go in the query string. A JSON body with the same fields is also accepted and, when sent, the query string is ignored.
11716
11718
  */
11717
11719
  export const removeAccountStructuredSnippet = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveAccountStructuredSnippetData, ThrowOnError>) => {
11718
11720
  return (options?.client ?? client).delete<RemoveAccountStructuredSnippetResponse, RemoveAccountStructuredSnippetError, ThrowOnError>({
@@ -7593,6 +7593,9 @@ export type graduationStrategy = 'MANUAL' | 'SS_PERFORMANCE';
7593
7593
  */
7594
7594
  export type KeywordEntry = string | {
7595
7595
  text: string;
7596
+ /**
7597
+ * Defaults to broad. Accepted in any case (EXACT, Exact) and stored lowercase.
7598
+ */
7596
7599
  matchType?: 'exact' | 'phrase' | 'broad';
7597
7600
  };
7598
7601
 
@@ -38936,6 +38939,9 @@ export type ListCommentAutomationsResponse = ({
38936
38939
  * Only with matchMode=word: also fire on close misspellings of a keyword (one edit for 4-7 character keywords, two from 8 up). Keywords shorter than 4 characters are never fuzzy-matched.
38937
38940
  */
38938
38941
  typoTolerance?: boolean;
38942
+ /**
38943
+ * Instagram and Facebook only. On reply-only platforms (tiktok, threads, linkedin, youtube) every DM-leg field is omitted: dmMessage, dmMessageVariations, buttons, template, quickReplies, dmMedia, publicReplyPolicy, dedupeSameTextHours, actions, audience, followGate, dmDelaySeconds and alsoMatchInDms.
38944
+ */
38939
38945
  dmMessage?: string;
38940
38946
  /**
38941
38947
  * Inline DM buttons (up to 3). Omitted when none are set.
@@ -39122,6 +39128,9 @@ export type CreateCommentAutomationResponse = ({
39122
39128
  * Only with matchMode=word: also fire on close misspellings of a keyword (one edit for 4-7 character keywords, two from 8 up). Keywords shorter than 4 characters are never fuzzy-matched.
39123
39129
  */
39124
39130
  typoTolerance?: boolean;
39131
+ /**
39132
+ * Omitted on reply-only platforms (tiktok, threads, linkedin, youtube), together with every other DM-leg field.
39133
+ */
39125
39134
  dmMessage?: string;
39126
39135
  /**
39127
39136
  * Inline DM buttons (up to 3). Omitted when none are set.
@@ -39200,6 +39209,9 @@ export type GetCommentAutomationResponse = ({
39200
39209
  * Only with matchMode=word: also fire on close misspellings of a keyword (one edit for 4-7 character keywords, two from 8 up). Keywords shorter than 4 characters are never fuzzy-matched.
39201
39210
  */
39202
39211
  typoTolerance?: boolean;
39212
+ /**
39213
+ * Omitted on reply-only platforms (tiktok, threads, linkedin, youtube), together with every other DM-leg field.
39214
+ */
39203
39215
  dmMessage?: string;
39204
39216
  /**
39205
39217
  * Inline DM buttons (up to 3). Omitted when none are set.
@@ -39275,6 +39287,18 @@ export type UpdateCommentAutomationData = {
39275
39287
  * Only with matchMode=word: also fire on close misspellings of a keyword (one edit for 4-7 character keywords, two from 8 up). Keywords shorter than 4 characters are never fuzzy-matched.
39276
39288
  */
39277
39289
  typoTolerance?: boolean;
39290
+ /**
39291
+ * Re-binds the automation to another post: the platform media/post ID (or story media id when trigger=story_reply). postId, platformPostId and postTitle move as a unit: sending any of them replaces all three, and an omitted one is cleared. Send all three as null (or empty) to make it account-wide (any post / any story). Omit all three to keep the current binding. 409 when another active automation already owns the new post.
39292
+ */
39293
+ platformPostId?: (string) | null;
39294
+ /**
39295
+ * Zernio post ID (24 hexadecimal characters); platform IDs return 400. Use it INSTEAD of platformPostId to bind to a not-yet-published Zernio post: the automation stays pending and arms itself when that post publishes. Moves as a unit with platformPostId and postTitle (see platformPostId).
39296
+ */
39297
+ postId?: (string) | null;
39298
+ /**
39299
+ * Post content snippet for display. Moves as a unit with platformPostId and postId (see platformPostId).
39300
+ */
39301
+ postTitle?: (string) | null;
39278
39302
  dmMessage?: string;
39279
39303
  /**
39280
39304
  * Inline DM buttons (1-3). Pass [] to clear all buttons.
@@ -39355,6 +39379,9 @@ export type UpdateCommentAutomationResponse = ({
39355
39379
  * Only with matchMode=word: also fire on close misspellings of a keyword (one edit for 4-7 character keywords, two from 8 up). Keywords shorter than 4 characters are never fuzzy-matched.
39356
39380
  */
39357
39381
  typoTolerance?: boolean;
39382
+ /**
39383
+ * Omitted on reply-only platforms (tiktok, threads, linkedin, youtube), together with every other DM-leg field.
39384
+ */
39358
39385
  dmMessage?: string;
39359
39386
  /**
39360
39387
  * Inline DM buttons (up to 3). Omitted when none are set.
@@ -39393,7 +39420,7 @@ export type UpdateCommentAutomationResponse = ({
39393
39420
 
39394
39421
  export type UpdateCommentAutomationError = (ErrorResponse | {
39395
39422
  error?: string;
39396
- });
39423
+ } | unknown);
39397
39424
 
39398
39425
  export type DeleteCommentAutomationData = {
39399
39426
  path: {
@@ -40003,6 +40030,9 @@ export type ListAdKeywordsData = {
40003
40030
  */
40004
40031
  campaignId?: string;
40005
40032
  limit?: number;
40033
+ /**
40034
+ * Accepted in any case.
40035
+ */
40006
40036
  matchType?: 'exact' | 'phrase' | 'broad' | 'unknown';
40007
40037
  /**
40008
40038
  * true = negative keywords only, false = positive only. Omit for both.
@@ -40691,8 +40721,14 @@ export type BulkUpdateAdCampaignStatusData = {
40691
40721
  body: {
40692
40722
  status: 'active' | 'paused';
40693
40723
  campaigns: Array<{
40724
+ /**
40725
+ * The campaign id on the ad platform (e.g. the numeric Google campaign id), not a Zernio id.
40726
+ */
40694
40727
  platformCampaignId: string;
40695
- platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
40728
+ /**
40729
+ * The ad platform, e.g. `google` for Google Ads. The ads connection slug (`googleads`, `tiktokads`, ...) is accepted as an alias. `metaads` is not: send `facebook` or `instagram`.
40730
+ */
40731
+ platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai' | 'googleads' | 'tiktokads' | 'linkedinads' | 'pinterestads' | 'xads' | 'openaiads';
40696
40732
  }>;
40697
40733
  };
40698
40734
  };
@@ -42103,7 +42139,13 @@ export type UpdateCampaignAssetsResponse = ({
42103
42139
  export type UpdateCampaignAssetsError = (ErrorResponse | unknown);
42104
42140
 
42105
42141
  export type RemoveCampaignAssetsData = {
42106
- body: {
42142
+ path: {
42143
+ /**
42144
+ * Numeric Google platform id.
42145
+ */
42146
+ campaignId: string;
42147
+ };
42148
+ query: {
42107
42149
  /**
42108
42150
  * Zernio Google Ads connection id.
42109
42151
  */
@@ -42113,18 +42155,18 @@ export type RemoveCampaignAssetsData = {
42113
42155
  */
42114
42156
  adAccountId?: string;
42115
42157
  /**
42116
- * Alias of adAccountId, kept for existing callers
42117
- * @deprecated
42158
+ * Asset resource names, retained for compatibility. Repeat the parameter or pass a comma-separated list.
42118
42159
  */
42119
- customerId?: string;
42120
42160
  assetResourceNames: Array<(string)>;
42161
+ /**
42162
+ * campaign_asset resource names to remove, e.g. customers/1234567890/campaignAssets/456~123~CALLOUT. Repeat the parameter or pass a comma-separated list.
42163
+ */
42121
42164
  campaignAssetResourceNames: Array<(string)>;
42122
- };
42123
- path: {
42124
42165
  /**
42125
- * Numeric Google platform id.
42166
+ * Alias of adAccountId, kept for existing callers
42167
+ * @deprecated
42126
42168
  */
42127
- campaignId: string;
42169
+ customerId?: string;
42128
42170
  };
42129
42171
  };
42130
42172
 
@@ -42252,7 +42294,13 @@ export type UpdateAdGroupAssetsResponse = ({
42252
42294
  export type UpdateAdGroupAssetsError = (ErrorResponse | unknown);
42253
42295
 
42254
42296
  export type RemoveAdGroupAssetsData = {
42255
- body: {
42297
+ path: {
42298
+ /**
42299
+ * Numeric Google platform id.
42300
+ */
42301
+ adSetId: string;
42302
+ };
42303
+ query: {
42256
42304
  /**
42257
42305
  * Zernio Google Ads connection id.
42258
42306
  */
@@ -42262,18 +42310,18 @@ export type RemoveAdGroupAssetsData = {
42262
42310
  */
42263
42311
  adAccountId?: string;
42264
42312
  /**
42265
- * Alias of adAccountId, kept for existing callers
42266
- * @deprecated
42313
+ * ad_group_asset resource names to remove, e.g. customers/1234567890/adGroupAssets/456~123~CALLOUT. Repeat the parameter or pass a comma-separated list.
42267
42314
  */
42268
- customerId?: string;
42269
- assetResourceNames: Array<(string)>;
42270
42315
  adGroupAssetResourceNames: Array<(string)>;
42271
- };
42272
- path: {
42273
42316
  /**
42274
- * Numeric Google platform id.
42317
+ * Asset resource names, retained for compatibility. Repeat the parameter or pass a comma-separated list.
42275
42318
  */
42276
- adSetId: string;
42319
+ assetResourceNames: Array<(string)>;
42320
+ /**
42321
+ * Alias of adAccountId, kept for existing callers
42322
+ * @deprecated
42323
+ */
42324
+ customerId?: string;
42277
42325
  };
42278
42326
  };
42279
42327
 
@@ -44065,13 +44113,43 @@ export type AttachAdLabelResponse = ({
44065
44113
  export type AttachAdLabelError = (ErrorResponse | unknown);
44066
44114
 
44067
44115
  export type DetachAdLabelData = {
44068
- body: GoogleAdLabelAssignments;
44069
44116
  path: {
44070
44117
  /**
44071
44118
  * Google label id
44072
44119
  */
44073
44120
  labelId: string;
44074
44121
  };
44122
+ query: {
44123
+ /**
44124
+ * Zernio Google Ads connection id.
44125
+ */
44126
+ accountId: string;
44127
+ /**
44128
+ * Platform ad account ID (Google customer ID, digits only). Required when the connection has multiple customers.
44129
+ */
44130
+ adAccountId?: string;
44131
+ /**
44132
+ * Google ad group ad ids, {adGroupId}~{adId}. Repeat the parameter or pass a comma-separated list.
44133
+ */
44134
+ adIds?: Array<(string)>;
44135
+ /**
44136
+ * Google ad group ids. Repeat the parameter or pass a comma-separated list.
44137
+ */
44138
+ adSetIds?: Array<(string)>;
44139
+ /**
44140
+ * Google campaign ids. Repeat the parameter or pass a comma-separated list.
44141
+ */
44142
+ campaignIds?: Array<(string)>;
44143
+ /**
44144
+ * Alias of adAccountId, kept for existing callers
44145
+ * @deprecated
44146
+ */
44147
+ customerId?: string;
44148
+ /**
44149
+ * Google keyword criterion ids, {adGroupId}~{criterionId}. Repeat the parameter or pass a comma-separated list.
44150
+ */
44151
+ keywordIds?: Array<(string)>;
44152
+ };
44075
44153
  };
44076
44154
 
44077
44155
  export type DetachAdLabelResponse = ({
@@ -44882,7 +44960,7 @@ export type UpdateAccountCalloutsResponse = ({
44882
44960
  export type UpdateAccountCalloutsError = (ErrorResponse | unknown);
44883
44961
 
44884
44962
  export type RemoveAccountCalloutData = {
44885
- body: {
44963
+ query: {
44886
44964
  /**
44887
44965
  * Zernio Google Ads connection id.
44888
44966
  */
@@ -44891,12 +44969,15 @@ export type RemoveAccountCalloutData = {
44891
44969
  * Platform ad account ID (Google customer ID, digits only). Required when the connection has multiple customers.
44892
44970
  */
44893
44971
  adAccountId?: string;
44972
+ /**
44973
+ * Numeric Google Ads asset id.
44974
+ */
44975
+ assetId: string;
44894
44976
  /**
44895
44977
  * Alias of adAccountId, kept for existing callers
44896
44978
  * @deprecated
44897
44979
  */
44898
44980
  customerId?: string;
44899
- assetId: string;
44900
44981
  };
44901
44982
  };
44902
44983
 
@@ -45016,7 +45097,7 @@ export type UpdateAccountSitelinksResponse = ({
45016
45097
  export type UpdateAccountSitelinksError = (ErrorResponse | unknown);
45017
45098
 
45018
45099
  export type RemoveAccountSitelinkData = {
45019
- body: {
45100
+ query: {
45020
45101
  /**
45021
45102
  * Zernio Google Ads connection id.
45022
45103
  */
@@ -45025,12 +45106,15 @@ export type RemoveAccountSitelinkData = {
45025
45106
  * Platform ad account ID (Google customer ID, digits only). Required when the connection has multiple customers.
45026
45107
  */
45027
45108
  adAccountId?: string;
45109
+ /**
45110
+ * Numeric Google Ads asset id.
45111
+ */
45112
+ assetId: string;
45028
45113
  /**
45029
45114
  * Alias of adAccountId, kept for existing callers
45030
45115
  * @deprecated
45031
45116
  */
45032
45117
  customerId?: string;
45033
- assetId: string;
45034
45118
  };
45035
45119
  };
45036
45120
 
@@ -45137,7 +45221,7 @@ export type UpdateAccountStructuredSnippetsResponse = ({
45137
45221
  export type UpdateAccountStructuredSnippetsError = (ErrorResponse | unknown);
45138
45222
 
45139
45223
  export type RemoveAccountStructuredSnippetData = {
45140
- body: {
45224
+ query: {
45141
45225
  /**
45142
45226
  * Zernio Google Ads connection id.
45143
45227
  */
@@ -45146,12 +45230,15 @@ export type RemoveAccountStructuredSnippetData = {
45146
45230
  * Platform ad account ID (Google customer ID, digits only). Required when the connection has multiple customers.
45147
45231
  */
45148
45232
  adAccountId?: string;
45233
+ /**
45234
+ * Numeric Google Ads asset id.
45235
+ */
45236
+ assetId: string;
45149
45237
  /**
45150
45238
  * Alias of adAccountId, kept for existing callers
45151
45239
  * @deprecated
45152
45240
  */
45153
45241
  customerId?: string;
45154
- assetId: string;
45155
45242
  };
45156
45243
  };
45157
45244
 
@@ -46994,15 +47081,18 @@ export type CreateStandaloneAdData = {
46994
47081
  * budget and schedule are inherited (passing those fields
46995
47082
  * returns 400).
46996
47083
  *
46997
- * On Google Ads the `adSetId` is the AD GROUP id. `goal` is
46998
- * still REQUIRED even though budget and targeting are
46999
- * inherited from the ad group. Send `campaignType: "search"`
47000
- * to attach into a Search ad group, including one created by
47001
- * `POST /v1/ads/ad-sets` (always SEARCH_STANDARD): without it
47002
- * the request is treated as Display and requires
47003
- * `images.landscape` + `images.square` + `businessName`, and
47004
- * the resulting display creative does not match a Search ad
47005
- * group.
47084
+ * On Google Ads the `adSetId` is the AD GROUP id (numeric). `goal`
47085
+ * is not required: the ad group keeps its campaign's bidding,
47086
+ * budget and targeting. `campaignType` is read from the ad group's
47087
+ * campaign (Search, Display or Demand Gen), so it can be omitted;
47088
+ * a `campaignType` that contradicts the ad group returns 400, an
47089
+ * ad group Google does not know in that customer returns 404, and
47090
+ * any other campaign type returns 422. A Search ad needs
47091
+ * `headline` + `body` + `linkUrl`; a Display ad also needs
47092
+ * `images.landscape` + `images.square` + `businessName`. Google
47093
+ * allows 3 responsive search ads per ad group: a fourth returns
47094
+ * 422 naming the limit (`RESPONSIVE_SEARCH_ADS_PER_AD_GROUP`) and
47095
+ * the ad group.
47006
47096
  * `budgetAmount`/`budgetType` and bidding fields
47007
47097
  * (`bidStrategy`, `bidAmount`, `portfolioBidStrategyId`)
47008
47098
  * return 400 on this shape; the ad group already owns them.
@@ -47524,7 +47614,7 @@ export type CreateStandaloneAdData = {
47524
47614
  */
47525
47615
  audienceId?: string;
47526
47616
  /**
47527
- * Google only. Performance Max requires assetGroup and Demand Gen requires demandGen; both are always created PAUSED.
47617
+ * Google only. Performance Max requires assetGroup and Demand Gen requires demandGen; both are always created PAUSED. With `adSetId` it defaults to the ad group's own campaign type instead of display.
47528
47618
  */
47529
47619
  campaignType?: 'display' | 'search' | 'pmax' | 'demand_gen';
47530
47620
  /**
@@ -47546,11 +47636,11 @@ export type CreateStandaloneAdData = {
47546
47636
  */
47547
47637
  campaignNegativeKeywords?: Array<KeywordEntry>;
47548
47638
  /**
47549
- * Google Search RSA only. Extra text assets as strings or objects with text and optional pinnedField. Existing string input remains supported. The effective create lists, including primary text and deduplication, must contain 3-15 headlines and 2-4 descriptions; excess entries return 400.
47639
+ * Google Search RSA only. Extra text assets as strings or objects with text and optional pinnedField. Existing string input remains supported. The effective create lists, including primary text and deduplication, must contain 3-15 headlines and 2-4 descriptions; excess entries return 400. Each headline is at most 30 characters (Google's limit): a longer one returns 400 naming the field and index (e.g. `additionalHeadlines[2]`), it is never truncated. On Search the same limit applies to `headline` and `longHeadline` (30) and to `body` (90).
47550
47640
  */
47551
47641
  additionalHeadlines?: Array<(string | GoogleRsaHeadline)>;
47552
47642
  /**
47553
- * Google Search RSA only. Extra text assets as strings or objects with text and optional pinnedField. Existing string input remains supported. The effective create lists, including primary text and deduplication, must contain 3-15 headlines and 2-4 descriptions; excess entries return 400.
47643
+ * Google Search RSA only. Extra text assets as strings or objects with text and optional pinnedField. Existing string input remains supported. The effective create lists, including primary text and deduplication, must contain 3-15 headlines and 2-4 descriptions; excess entries return 400. Each description is at most 90 characters (Google's limit): a longer one returns 400 naming the field and index (e.g. `additionalDescriptions[2]`), it is never truncated. On Search the same limit applies to `headline` and `longHeadline` (30) and to `body` (90).
47554
47644
  */
47555
47645
  additionalDescriptions?: Array<(string | GoogleRsaDescription)>;
47556
47646
  /**