@getlatedev/node 0.2.1217 → 0.2.1219

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
@@ -42272,6 +42272,44 @@ type UpdateAdSetData = {
42272
42272
  */
42273
42273
  interestsBehaviors?: boolean;
42274
42274
  };
42275
+ /**
42276
+ * Meta only (400 elsewhere). Manual placements, same object and enums as `placements` on
42277
+ * POST /v1/ads/create. Sending an object REPLACES the ad set's current placement set
42278
+ * (`publisher_platforms`, every `*_positions` list and `device_platforms`); a position
42279
+ * list you leave out is removed. `null` removes every placement key so Meta returns to
42280
+ * automatic (Advantage+) placements. Omit to leave placements untouched. Meta enforces
42281
+ * co-selection rules (e.g. a position needs its publisher platform) and its error is
42282
+ * returned as is. Meta may also reject `null` or a narrower set when an ad's creative
42283
+ * uses per-placement asset customization (`placementAssets`). An object with no
42284
+ * non-empty list is a 400 (send `null` instead). Cannot be combined with
42285
+ * `targeting.placements` (400).
42286
+ *
42287
+ */
42288
+ placements?: {
42289
+ publisherPlatforms?: Array<('facebook' | 'instagram' | 'threads' | 'messenger' | 'audience_network' | 'whatsapp')>;
42290
+ facebookPositions?: Array<('feed' | 'right_hand_column' | 'marketplace' | 'video_feeds' | 'story' | 'search' | 'instream_video' | 'facebook_reels' | 'facebook_reels_overlay' | 'profile_feed' | 'notification')>;
42291
+ instagramPositions?: Array<('stream' | 'story' | 'explore' | 'explore_home' | 'reels' | 'profile_feed' | 'ig_search' | 'profile_reels')>;
42292
+ messengerPositions?: Array<('messenger_home' | 'sponsored_messages' | 'story')>;
42293
+ audienceNetworkPositions?: Array<('classic' | 'rewarded_video')>;
42294
+ threadsPositions?: Array<('threads_stream')>;
42295
+ whatsappPositions?: Array<('status')>;
42296
+ devicePlatforms?: Array<('mobile' | 'desktop')>;
42297
+ } | null;
42298
+ /**
42299
+ * Meta only (400 elsewhere). Targeting fields to change, same shape as the `targeting`
42300
+ * object on POST /v1/ads/create. Only the keys you send change: Zernio reads the ad set's
42301
+ * live targeting from Meta, merges these keys over it and writes the full spec back, so
42302
+ * everything you do not send (custom audiences, geo, age, interest groups,
42303
+ * `targeting_automation`) is kept. Setting any location replaces every location list.
42304
+ * An empty list or `gender: all` clears that key. `incomeTier` is resolved to Meta's
42305
+ * income segment first (422 when Meta has none). Fields Meta cannot target (LinkedIn
42306
+ * B2B, Google `devices`, Reddit communities and keywords) return 400 with
42307
+ * `param: targeting.<field>`. An empty object is a 400, and so is a
42308
+ * `targeting.placements` object with no non-empty list (`param: targeting.placements`). When the live targeting cannot be
42309
+ * read the request returns 502 and nothing is written.
42310
+ *
42311
+ */
42312
+ targeting?: (TargetingSpec);
42275
42313
  /**
42276
42314
  * Bid cap in WHOLE currency units (USD: 5 = $5.00; JPY: 100 = ¥100). Required when
42277
42315
  * bidStrategy is LOWEST_COST_WITH_BID_CAP or COST_CAP. Internally converted to Meta's
@@ -42407,6 +42445,12 @@ type UpdateAdSetResponse = ({
42407
42445
  platformSpecificData?: {
42408
42446
  [key: string]: unknown;
42409
42447
  };
42448
+ /**
42449
+ * Present when `placements` or `targeting` was sent. The ad set's full Meta targeting as written (Meta snake_case). The same snake_case object is stored as the ad set's and its ads' `targeting`.
42450
+ */
42451
+ targeting?: {
42452
+ [key: string]: unknown;
42453
+ };
42410
42454
  });
42411
42455
  type UpdateAdSetError = (unknown | ErrorResponse);
42412
42456
  type DeleteAdSetData = {
@@ -49395,9 +49439,9 @@ type SearchAdTargetingData = {
49395
49439
  */
49396
49440
  countryCode?: string;
49397
49441
  /**
49398
- * What to search. `geo` resolves locations (scope further with `geoType`), `interest`/`behavior` resolve audience entities (`behavior` on Meta, TikTok and LinkedIn), `interestKeyword`/`hashtag` resolve TikTok additional interests and hashtags (TikTok only), `income` resolves the normalized income tiers, `language` resolves Google's targetable language_constant table (Google only), `workPosition`/`workEmployer`/`workIndustry` resolve Meta work demographics, `industry`/`jobFunction`/`seniority`/`companySize` resolve LinkedIn B2B facets (LinkedIn only). Defaults to `interest` for backward compatibility with the deprecated /v1/ads/interests alias.
49442
+ * What to search. `geo` resolves locations (scope further with `geoType`), `interest`/`behavior` resolve audience entities (`behavior` on Meta, TikTok and LinkedIn), `interestSuggestion` suggests interests related to the names in `q` (Meta only), `interestKeyword`/`hashtag` resolve TikTok additional interests and hashtags (TikTok only), `income` resolves the normalized income tiers, `language` resolves Google's targetable language_constant table (Google only), `workPosition`/`workEmployer`/`workIndustry` resolve Meta work demographics, `industry`/`jobFunction`/`seniority`/`companySize` resolve LinkedIn B2B facets (LinkedIn only). Defaults to `interest` for backward compatibility with the deprecated /v1/ads/interests alias.
49399
49443
  */
49400
- dimension?: 'geo' | 'interest' | 'interestKeyword' | 'behavior' | 'hashtag' | 'income' | 'language' | 'workPosition' | 'workEmployer' | 'workIndustry' | 'industry' | 'jobFunction' | 'seniority' | 'companySize' | 'community' | 'conversationKeyword';
49444
+ dimension?: 'geo' | 'interest' | 'interestSuggestion' | 'interestKeyword' | 'behavior' | 'hashtag' | 'income' | 'language' | 'workPosition' | 'workEmployer' | 'workIndustry' | 'industry' | 'jobFunction' | 'seniority' | 'companySize' | 'community' | 'conversationKeyword';
49401
49445
  /**
49402
49446
  * Only used when `dimension=geo`. The kind of location to resolve. `all` searches every type in one relevance-ranked call. Defaults to `city`.
49403
49447
  */
@@ -49407,7 +49451,7 @@ type SearchAdTargetingData = {
49407
49451
  */
49408
49452
  limit?: number;
49409
49453
  /**
49410
- * Search query. For geo, the locality name only (no region/country suffix).
49454
+ * Search query. For geo, the locality name only (no region/country suffix). For `interestSuggestion`, the interest names: comma-separated, or a JSON array of strings when a name contains a comma (a `q` starting with `[` is read as JSON).
49411
49455
  */
49412
49456
  q: string;
49413
49457
  };
@@ -49423,7 +49467,7 @@ type SearchAdTargetingResponse = ({
49423
49467
  */
49424
49468
  name: string;
49425
49469
  /**
49426
- * What the result is. Equals the requested dimension (interest, interestKeyword, behavior, hashtag, income, language, workPosition, workEmployer, workIndustry, industry, jobFunction, seniority, companySize, community, conversationKeyword), or the location level for geo (country, region, city, zip, metro, ...).
49470
+ * What the result is. Equals the requested dimension (interest, interestSuggestion, interestKeyword, behavior, hashtag, income, language, workPosition, workEmployer, workIndustry, industry, jobFunction, seniority, companySize, community, conversationKeyword), or the location level for geo (country, region, city, zip, metro, ...).
49427
49471
  */
49428
49472
  type: string;
49429
49473
  /**
package/dist/index.d.ts CHANGED
@@ -42272,6 +42272,44 @@ type UpdateAdSetData = {
42272
42272
  */
42273
42273
  interestsBehaviors?: boolean;
42274
42274
  };
42275
+ /**
42276
+ * Meta only (400 elsewhere). Manual placements, same object and enums as `placements` on
42277
+ * POST /v1/ads/create. Sending an object REPLACES the ad set's current placement set
42278
+ * (`publisher_platforms`, every `*_positions` list and `device_platforms`); a position
42279
+ * list you leave out is removed. `null` removes every placement key so Meta returns to
42280
+ * automatic (Advantage+) placements. Omit to leave placements untouched. Meta enforces
42281
+ * co-selection rules (e.g. a position needs its publisher platform) and its error is
42282
+ * returned as is. Meta may also reject `null` or a narrower set when an ad's creative
42283
+ * uses per-placement asset customization (`placementAssets`). An object with no
42284
+ * non-empty list is a 400 (send `null` instead). Cannot be combined with
42285
+ * `targeting.placements` (400).
42286
+ *
42287
+ */
42288
+ placements?: {
42289
+ publisherPlatforms?: Array<('facebook' | 'instagram' | 'threads' | 'messenger' | 'audience_network' | 'whatsapp')>;
42290
+ facebookPositions?: Array<('feed' | 'right_hand_column' | 'marketplace' | 'video_feeds' | 'story' | 'search' | 'instream_video' | 'facebook_reels' | 'facebook_reels_overlay' | 'profile_feed' | 'notification')>;
42291
+ instagramPositions?: Array<('stream' | 'story' | 'explore' | 'explore_home' | 'reels' | 'profile_feed' | 'ig_search' | 'profile_reels')>;
42292
+ messengerPositions?: Array<('messenger_home' | 'sponsored_messages' | 'story')>;
42293
+ audienceNetworkPositions?: Array<('classic' | 'rewarded_video')>;
42294
+ threadsPositions?: Array<('threads_stream')>;
42295
+ whatsappPositions?: Array<('status')>;
42296
+ devicePlatforms?: Array<('mobile' | 'desktop')>;
42297
+ } | null;
42298
+ /**
42299
+ * Meta only (400 elsewhere). Targeting fields to change, same shape as the `targeting`
42300
+ * object on POST /v1/ads/create. Only the keys you send change: Zernio reads the ad set's
42301
+ * live targeting from Meta, merges these keys over it and writes the full spec back, so
42302
+ * everything you do not send (custom audiences, geo, age, interest groups,
42303
+ * `targeting_automation`) is kept. Setting any location replaces every location list.
42304
+ * An empty list or `gender: all` clears that key. `incomeTier` is resolved to Meta's
42305
+ * income segment first (422 when Meta has none). Fields Meta cannot target (LinkedIn
42306
+ * B2B, Google `devices`, Reddit communities and keywords) return 400 with
42307
+ * `param: targeting.<field>`. An empty object is a 400, and so is a
42308
+ * `targeting.placements` object with no non-empty list (`param: targeting.placements`). When the live targeting cannot be
42309
+ * read the request returns 502 and nothing is written.
42310
+ *
42311
+ */
42312
+ targeting?: (TargetingSpec);
42275
42313
  /**
42276
42314
  * Bid cap in WHOLE currency units (USD: 5 = $5.00; JPY: 100 = ¥100). Required when
42277
42315
  * bidStrategy is LOWEST_COST_WITH_BID_CAP or COST_CAP. Internally converted to Meta's
@@ -42407,6 +42445,12 @@ type UpdateAdSetResponse = ({
42407
42445
  platformSpecificData?: {
42408
42446
  [key: string]: unknown;
42409
42447
  };
42448
+ /**
42449
+ * Present when `placements` or `targeting` was sent. The ad set's full Meta targeting as written (Meta snake_case). The same snake_case object is stored as the ad set's and its ads' `targeting`.
42450
+ */
42451
+ targeting?: {
42452
+ [key: string]: unknown;
42453
+ };
42410
42454
  });
42411
42455
  type UpdateAdSetError = (unknown | ErrorResponse);
42412
42456
  type DeleteAdSetData = {
@@ -49395,9 +49439,9 @@ type SearchAdTargetingData = {
49395
49439
  */
49396
49440
  countryCode?: string;
49397
49441
  /**
49398
- * What to search. `geo` resolves locations (scope further with `geoType`), `interest`/`behavior` resolve audience entities (`behavior` on Meta, TikTok and LinkedIn), `interestKeyword`/`hashtag` resolve TikTok additional interests and hashtags (TikTok only), `income` resolves the normalized income tiers, `language` resolves Google's targetable language_constant table (Google only), `workPosition`/`workEmployer`/`workIndustry` resolve Meta work demographics, `industry`/`jobFunction`/`seniority`/`companySize` resolve LinkedIn B2B facets (LinkedIn only). Defaults to `interest` for backward compatibility with the deprecated /v1/ads/interests alias.
49442
+ * What to search. `geo` resolves locations (scope further with `geoType`), `interest`/`behavior` resolve audience entities (`behavior` on Meta, TikTok and LinkedIn), `interestSuggestion` suggests interests related to the names in `q` (Meta only), `interestKeyword`/`hashtag` resolve TikTok additional interests and hashtags (TikTok only), `income` resolves the normalized income tiers, `language` resolves Google's targetable language_constant table (Google only), `workPosition`/`workEmployer`/`workIndustry` resolve Meta work demographics, `industry`/`jobFunction`/`seniority`/`companySize` resolve LinkedIn B2B facets (LinkedIn only). Defaults to `interest` for backward compatibility with the deprecated /v1/ads/interests alias.
49399
49443
  */
49400
- dimension?: 'geo' | 'interest' | 'interestKeyword' | 'behavior' | 'hashtag' | 'income' | 'language' | 'workPosition' | 'workEmployer' | 'workIndustry' | 'industry' | 'jobFunction' | 'seniority' | 'companySize' | 'community' | 'conversationKeyword';
49444
+ dimension?: 'geo' | 'interest' | 'interestSuggestion' | 'interestKeyword' | 'behavior' | 'hashtag' | 'income' | 'language' | 'workPosition' | 'workEmployer' | 'workIndustry' | 'industry' | 'jobFunction' | 'seniority' | 'companySize' | 'community' | 'conversationKeyword';
49401
49445
  /**
49402
49446
  * Only used when `dimension=geo`. The kind of location to resolve. `all` searches every type in one relevance-ranked call. Defaults to `city`.
49403
49447
  */
@@ -49407,7 +49451,7 @@ type SearchAdTargetingData = {
49407
49451
  */
49408
49452
  limit?: number;
49409
49453
  /**
49410
- * Search query. For geo, the locality name only (no region/country suffix).
49454
+ * Search query. For geo, the locality name only (no region/country suffix). For `interestSuggestion`, the interest names: comma-separated, or a JSON array of strings when a name contains a comma (a `q` starting with `[` is read as JSON).
49411
49455
  */
49412
49456
  q: string;
49413
49457
  };
@@ -49423,7 +49467,7 @@ type SearchAdTargetingResponse = ({
49423
49467
  */
49424
49468
  name: string;
49425
49469
  /**
49426
- * What the result is. Equals the requested dimension (interest, interestKeyword, behavior, hashtag, income, language, workPosition, workEmployer, workIndustry, industry, jobFunction, seniority, companySize, community, conversationKeyword), or the location level for geo (country, region, city, zip, metro, ...).
49470
+ * What the result is. Equals the requested dimension (interest, interestSuggestion, interestKeyword, behavior, hashtag, income, language, workPosition, workEmployer, workIndustry, industry, jobFunction, seniority, companySize, community, conversationKeyword), or the location level for geo (country, region, city, zip, metro, ...).
49427
49471
  */
49428
49472
  type: string;
49429
49473
  /**
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.1217",
39
+ version: "0.2.1219",
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.1217",
8
+ version: "0.2.1219",
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.1217",
3
+ "version": "0.2.1219",
4
4
  "description": "The official Node.js library for the Zernio API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -10540,6 +10540,17 @@ export const getAdSetDetails = <ThrowOnError extends boolean = false>(options: O
10540
10540
  * theirs, and `statusUpdated` / `statusSkipped` report whether that switch
10541
10541
  * was written or a live read showed it already in place.
10542
10542
  *
10543
+ * Placements and targeting (Meta only): `placements` and `targeting` take the same shapes
10544
+ * as POST /v1/ads/create. Meta replaces an ad set's targeting wholesale, so Zernio reads
10545
+ * the live targeting first, changes only what the request names and writes the merged
10546
+ * spec back: custom audiences, geo, age, interest groups and `targeting_automation` you do
10547
+ * not send are kept. `placements` replaces the whole placement set, `placements: null`
10548
+ * returns the ad set to automatic placements, and omitting it leaves placements as they
10549
+ * are. Other platforms return 400 for either field before anything in the request is
10550
+ * written (use PUT /v1/ads/{adId} with `targeting` where that platform supports it). The
10551
+ * live read and the `incomeTier` lookup run before any other field is written, so a 502
10552
+ * or 422 from them leaves the ad set unchanged.
10553
+ *
10543
10554
  */
10544
10555
  export const updateAdSet = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateAdSetData, ThrowOnError>) => {
10545
10556
  return (options?.client ?? client).put<UpdateAdSetResponse, UpdateAdSetError, ThrowOnError>({
@@ -13166,6 +13177,15 @@ export const searchAdInterests = <ThrowOnError extends boolean = false>(options:
13166
13177
  *
13167
13178
  * - `geo`: locations, further scoped by `geoType`
13168
13179
  * - `interest`
13180
+ * - `interestSuggestion`: Meta only. Interests related to the interest names in `q`, from Meta's
13181
+ * interest suggestions. `q` lists interest names, case sensitive, names and not ids: either
13182
+ * comma-separated (`NBA,Michael Jordan`) or, for names that contain a comma, a JSON array of
13183
+ * strings (`["Earth, Wind & Fire","Yoga"]`, URL-encoded). A `q` starting with `[` is always read as
13184
+ * JSON. A `q` with no name or malformed JSON returns 400 naming `q`. Meta also suggests behaviors
13185
+ * and demographics; Zernio keeps only interests (entries whose `path` starts with `Interests`), so
13186
+ * every id goes in `TargetingSpec.interests`, like `interest` results. Zernio asks Meta for three
13187
+ * times `limit` (at most 100) before filtering, so fewer than `limit` results can come back. Meta
13188
+ * weights the first name heavily: a multi-name `q` mostly returns suggestions for the first one
13169
13189
  * - `behavior`: Meta, TikTok and LinkedIn, matched by name; ids feed `TargetingSpec.behaviors`.
13170
13190
  * Meta: its fixed behaviors catalog (e.g. `Small business owners`, `Frequent Travelers`).
13171
13191
  * TikTok: video and creator interaction categories (e.g. `Software & Apps`), with ids like
@@ -42757,6 +42757,44 @@ export type UpdateAdSetData = {
42757
42757
  */
42758
42758
  interestsBehaviors?: boolean;
42759
42759
  };
42760
+ /**
42761
+ * Meta only (400 elsewhere). Manual placements, same object and enums as `placements` on
42762
+ * POST /v1/ads/create. Sending an object REPLACES the ad set's current placement set
42763
+ * (`publisher_platforms`, every `*_positions` list and `device_platforms`); a position
42764
+ * list you leave out is removed. `null` removes every placement key so Meta returns to
42765
+ * automatic (Advantage+) placements. Omit to leave placements untouched. Meta enforces
42766
+ * co-selection rules (e.g. a position needs its publisher platform) and its error is
42767
+ * returned as is. Meta may also reject `null` or a narrower set when an ad's creative
42768
+ * uses per-placement asset customization (`placementAssets`). An object with no
42769
+ * non-empty list is a 400 (send `null` instead). Cannot be combined with
42770
+ * `targeting.placements` (400).
42771
+ *
42772
+ */
42773
+ placements?: {
42774
+ publisherPlatforms?: Array<('facebook' | 'instagram' | 'threads' | 'messenger' | 'audience_network' | 'whatsapp')>;
42775
+ facebookPositions?: Array<('feed' | 'right_hand_column' | 'marketplace' | 'video_feeds' | 'story' | 'search' | 'instream_video' | 'facebook_reels' | 'facebook_reels_overlay' | 'profile_feed' | 'notification')>;
42776
+ instagramPositions?: Array<('stream' | 'story' | 'explore' | 'explore_home' | 'reels' | 'profile_feed' | 'ig_search' | 'profile_reels')>;
42777
+ messengerPositions?: Array<('messenger_home' | 'sponsored_messages' | 'story')>;
42778
+ audienceNetworkPositions?: Array<('classic' | 'rewarded_video')>;
42779
+ threadsPositions?: Array<('threads_stream')>;
42780
+ whatsappPositions?: Array<('status')>;
42781
+ devicePlatforms?: Array<('mobile' | 'desktop')>;
42782
+ } | null;
42783
+ /**
42784
+ * Meta only (400 elsewhere). Targeting fields to change, same shape as the `targeting`
42785
+ * object on POST /v1/ads/create. Only the keys you send change: Zernio reads the ad set's
42786
+ * live targeting from Meta, merges these keys over it and writes the full spec back, so
42787
+ * everything you do not send (custom audiences, geo, age, interest groups,
42788
+ * `targeting_automation`) is kept. Setting any location replaces every location list.
42789
+ * An empty list or `gender: all` clears that key. `incomeTier` is resolved to Meta's
42790
+ * income segment first (422 when Meta has none). Fields Meta cannot target (LinkedIn
42791
+ * B2B, Google `devices`, Reddit communities and keywords) return 400 with
42792
+ * `param: targeting.<field>`. An empty object is a 400, and so is a
42793
+ * `targeting.placements` object with no non-empty list (`param: targeting.placements`). When the live targeting cannot be
42794
+ * read the request returns 502 and nothing is written.
42795
+ *
42796
+ */
42797
+ targeting?: (TargetingSpec);
42760
42798
  /**
42761
42799
  * Bid cap in WHOLE currency units (USD: 5 = $5.00; JPY: 100 = ¥100). Required when
42762
42800
  * bidStrategy is LOWEST_COST_WITH_BID_CAP or COST_CAP. Internally converted to Meta's
@@ -42893,6 +42931,12 @@ export type UpdateAdSetResponse = ({
42893
42931
  platformSpecificData?: {
42894
42932
  [key: string]: unknown;
42895
42933
  };
42934
+ /**
42935
+ * Present when `placements` or `targeting` was sent. The ad set's full Meta targeting as written (Meta snake_case). The same snake_case object is stored as the ad set's and its ads' `targeting`.
42936
+ */
42937
+ targeting?: {
42938
+ [key: string]: unknown;
42939
+ };
42896
42940
  });
42897
42941
 
42898
42942
  export type UpdateAdSetError = (unknown | ErrorResponse);
@@ -50261,9 +50305,9 @@ export type SearchAdTargetingData = {
50261
50305
  */
50262
50306
  countryCode?: string;
50263
50307
  /**
50264
- * What to search. `geo` resolves locations (scope further with `geoType`), `interest`/`behavior` resolve audience entities (`behavior` on Meta, TikTok and LinkedIn), `interestKeyword`/`hashtag` resolve TikTok additional interests and hashtags (TikTok only), `income` resolves the normalized income tiers, `language` resolves Google's targetable language_constant table (Google only), `workPosition`/`workEmployer`/`workIndustry` resolve Meta work demographics, `industry`/`jobFunction`/`seniority`/`companySize` resolve LinkedIn B2B facets (LinkedIn only). Defaults to `interest` for backward compatibility with the deprecated /v1/ads/interests alias.
50308
+ * What to search. `geo` resolves locations (scope further with `geoType`), `interest`/`behavior` resolve audience entities (`behavior` on Meta, TikTok and LinkedIn), `interestSuggestion` suggests interests related to the names in `q` (Meta only), `interestKeyword`/`hashtag` resolve TikTok additional interests and hashtags (TikTok only), `income` resolves the normalized income tiers, `language` resolves Google's targetable language_constant table (Google only), `workPosition`/`workEmployer`/`workIndustry` resolve Meta work demographics, `industry`/`jobFunction`/`seniority`/`companySize` resolve LinkedIn B2B facets (LinkedIn only). Defaults to `interest` for backward compatibility with the deprecated /v1/ads/interests alias.
50265
50309
  */
50266
- dimension?: 'geo' | 'interest' | 'interestKeyword' | 'behavior' | 'hashtag' | 'income' | 'language' | 'workPosition' | 'workEmployer' | 'workIndustry' | 'industry' | 'jobFunction' | 'seniority' | 'companySize' | 'community' | 'conversationKeyword';
50310
+ dimension?: 'geo' | 'interest' | 'interestSuggestion' | 'interestKeyword' | 'behavior' | 'hashtag' | 'income' | 'language' | 'workPosition' | 'workEmployer' | 'workIndustry' | 'industry' | 'jobFunction' | 'seniority' | 'companySize' | 'community' | 'conversationKeyword';
50267
50311
  /**
50268
50312
  * Only used when `dimension=geo`. The kind of location to resolve. `all` searches every type in one relevance-ranked call. Defaults to `city`.
50269
50313
  */
@@ -50273,7 +50317,7 @@ export type SearchAdTargetingData = {
50273
50317
  */
50274
50318
  limit?: number;
50275
50319
  /**
50276
- * Search query. For geo, the locality name only (no region/country suffix).
50320
+ * Search query. For geo, the locality name only (no region/country suffix). For `interestSuggestion`, the interest names: comma-separated, or a JSON array of strings when a name contains a comma (a `q` starting with `[` is read as JSON).
50277
50321
  */
50278
50322
  q: string;
50279
50323
  };
@@ -50290,7 +50334,7 @@ export type SearchAdTargetingResponse = ({
50290
50334
  */
50291
50335
  name: string;
50292
50336
  /**
50293
- * What the result is. Equals the requested dimension (interest, interestKeyword, behavior, hashtag, income, language, workPosition, workEmployer, workIndustry, industry, jobFunction, seniority, companySize, community, conversationKeyword), or the location level for geo (country, region, city, zip, metro, ...).
50337
+ * What the result is. Equals the requested dimension (interest, interestSuggestion, interestKeyword, behavior, hashtag, income, language, workPosition, workEmployer, workIndustry, industry, jobFunction, seniority, companySize, community, conversationKeyword), or the location level for geo (country, region, city, zip, metro, ...).
50294
50338
  */
50295
50339
  type: string;
50296
50340
  /**