@getlatedev/node 0.2.369 → 0.2.371

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
@@ -10055,6 +10055,16 @@ type ConnectAdsData = {
10055
10055
  *
10056
10056
  */
10057
10057
  adAccountIds?: Array<(string)>;
10058
+ /**
10059
+ * Force a fresh OAuth even when an account already exists. Normally the
10060
+ * endpoint returns `alreadyConnected: true` whenever a connected account
10061
+ * is found, keying off its active state rather than token liveness.
10062
+ * Set `force=true` to bypass that and always receivean `authUrl`.
10063
+ * Completing the returned OAuth refreshes the stored token
10064
+ * on the existing posting and ads accounts in place.
10065
+ *
10066
+ */
10067
+ force?: boolean;
10058
10068
  /**
10059
10069
  * Enable headless mode (same-token platforms only)
10060
10070
  */
@@ -22504,11 +22514,15 @@ type BulkUpdateAdCampaignStatusError = (unknown | {
22504
22514
  });
22505
22515
  type DuplicateAdCampaignData = {
22506
22516
  body: {
22507
- platform: 'facebook' | 'instagram' | 'tiktok';
22517
+ platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin';
22508
22518
  /**
22509
22519
  * Copy child ad sets + ads + creatives + targeting
22510
22520
  */
22511
22521
  deepCopy?: boolean;
22522
+ /**
22523
+ * ACTIVE = launch the clone immediately (spends the moment LinkedIn approves it). PAUSED = clone stays DRAFT, safe default. INHERITED_FROM_SOURCE = mirror each entity's source status per-entity. Duplicating an ACTIVE campaign this way starts a second front of spend.
22524
+ *
22525
+ */
22512
22526
  statusOption?: 'ACTIVE' | 'PAUSED' | 'INHERITED_FROM_SOURCE';
22513
22527
  /**
22514
22528
  * Reschedule the copied hierarchy's start time
@@ -23367,13 +23381,76 @@ type BoostPostData = {
23367
23381
  */
23368
23382
  endDate?: string;
23369
23383
  };
23384
+ /**
23385
+ * Same geo/demographic fields as the `TargetingSpec` used by /v1/ads/create.
23386
+ * Geo keys (`regions`/`cities`/`zips`/`metros`) resolve via
23387
+ * GET /v1/ads/targeting/search?dimension=geo. City radius and lat/lng
23388
+ * `customLocations` are Meta-only and preserve the boosted post's
23389
+ * social proof (the ad references the existing post).
23390
+ *
23391
+ */
23370
23392
  targeting?: {
23371
23393
  ageMin?: number;
23372
23394
  ageMax?: number;
23395
+ /**
23396
+ * Meta only.
23397
+ */
23398
+ gender?: 'all' | 'male' | 'female';
23399
+ /**
23400
+ * Meta locale ids (numeric), passed through as given.
23401
+ */
23402
+ languages?: Array<(string)>;
23373
23403
  /**
23374
23404
  * ISO country codes. Required for TikTok boosts (TikTok's ad group requires location_ids); optional on other platforms.
23375
23405
  */
23376
23406
  countries?: Array<(string)>;
23407
+ /**
23408
+ * Region/state targeting. `key` from /v1/ads/targeting/search?dimension=geo&geoType=region.
23409
+ */
23410
+ regions?: Array<{
23411
+ key: string;
23412
+ name?: string;
23413
+ }>;
23414
+ /**
23415
+ * City targeting. Optional `radius` + `distance_unit` extend beyond the city limits (both set together, Meta only).
23416
+ */
23417
+ cities?: Array<{
23418
+ key: string;
23419
+ name?: string;
23420
+ /**
23421
+ * Requires distance_unit.
23422
+ */
23423
+ radius?: number;
23424
+ distance_unit?: 'mile' | 'kilometer';
23425
+ }>;
23426
+ /**
23427
+ * Postal/ZIP targeting. `key` is the platform's postal location ID (e.g. Meta `US:94304`).
23428
+ */
23429
+ zips?: Array<{
23430
+ key: string;
23431
+ name?: string;
23432
+ }>;
23433
+ /**
23434
+ * DMA / metro-area targeting. `key` is the platform's metro ID (e.g. Meta `DMA:807`).
23435
+ */
23436
+ metros?: Array<{
23437
+ key: string;
23438
+ name?: string;
23439
+ }>;
23440
+ /**
23441
+ * Point-radius (lat/lng) targeting (Meta custom_locations). No geo `key` lookup needed.
23442
+ */
23443
+ customLocations?: Array<{
23444
+ latitude: number;
23445
+ longitude: number;
23446
+ radius: number;
23447
+ distanceUnit: 'mile' | 'kilometer';
23448
+ name?: string;
23449
+ /**
23450
+ * Optional label, sent to Meta as `address_string`.
23451
+ */
23452
+ address?: string;
23453
+ }>;
23377
23454
  /**
23378
23455
  * Interest objects from /v1/ads/interests. Each must include id and name.
23379
23456
  */
@@ -23386,6 +23463,17 @@ type BoostPostData = {
23386
23463
  */
23387
23464
  advantage_audience?: 0 | 1;
23388
23465
  };
23466
+ /**
23467
+ * Meta only. A verbatim Meta-native targeting spec (e.g.
23468
+ * `{ "geo_locations": { "cities": [{ "key": "...", "radius": 15, "distance_unit": "kilometer" }] } }`),
23469
+ * forwarded unchanged. Mutually exclusive with `targeting` (sending both is a 400).
23470
+ * Use for advanced fields the structured object does not expose (flexible_spec,
23471
+ * excluded audiences, business places).
23472
+ *
23473
+ */
23474
+ rawTargeting?: {
23475
+ [key: string]: unknown;
23476
+ };
23389
23477
  /**
23390
23478
  * Meta bid strategy applied to the ad set. On TikTok, mapped to
23391
23479
  * `bid_type` / `bid_price` / `deep_bid_type` automatically.
@@ -23669,22 +23757,31 @@ type CreateStandaloneAdData = {
23669
23757
  * to build N full ads sharing one ad set: create the first ad
23670
23758
  * via the normal shape, then attach the rest one call each.
23671
23759
  *
23672
- * Supported on Meta (facebook, instagram) and TikTok. On TikTok
23673
- * the `adSetId` is the ad group ID; the new ad inherits the
23674
- * ad group's bid + budget + targeting.
23760
+ * Supported on Meta (facebook, instagram), TikTok, and
23761
+ * LinkedIn. On TikTok the `adSetId` is the ad group ID; the
23762
+ * new ad inherits the ad group's bid + budget + targeting.
23763
+ * On LinkedIn the `adSetId` is the LinkedIn Campaign ID
23764
+ * (numeric); we attach a new Creative to that Campaign, so
23765
+ * the Campaign's `platformSpecificData` bidding, targeting,
23766
+ * budget and schedule are inherited (passing those fields
23767
+ * returns 400).
23675
23768
  *
23676
23769
  */
23677
23770
  adSetId?: string;
23678
23771
  /**
23679
- * Meta only. Add the new ad set under this EXISTING campaign
23680
- * instead of creating a new one (multi-ad-set audience testing).
23681
- * The new ad set's budget is matched to the campaign's mode
23682
- * automatically: for a CBO campaign (campaign-level budget) omit
23683
- * `budgetAmount`/`budgetType` the campaign owns the budget; for
23684
- * an ABO campaign pass them (they go on the new ad set). On
23685
- * failure only the new ad set is cleaned up; the existing campaign
23686
- * is left untouched and is never (re)activated. Mutually exclusive
23687
- * with `adSetId` and `creatives[]`.
23772
+ * Meta + LinkedIn. On Meta: add the new ad set under this
23773
+ * EXISTING campaign instead of creating a new one
23774
+ * (multi-ad-set audience testing). The new ad set's budget
23775
+ * is matched to the campaign's mode automatically: for a
23776
+ * CBO campaign (campaign-level budget) omit
23777
+ * `budgetAmount`/`budgetType` the campaign owns the
23778
+ * budget; for an ABO campaign pass them (they go on the new
23779
+ * ad set). On LinkedIn: create a new Campaign (and its
23780
+ * Creative) under this EXISTING CampaignGroup. On failure
23781
+ * only the entities we authored are cleaned up; the
23782
+ * pre-existing parent is left untouched and is never
23783
+ * (re)activated. Mutually exclusive with `adSetId` and
23784
+ * `creatives[]`.
23688
23785
  *
23689
23786
  */
23690
23787
  existingCampaignId?: string;
package/dist/index.d.ts CHANGED
@@ -10055,6 +10055,16 @@ type ConnectAdsData = {
10055
10055
  *
10056
10056
  */
10057
10057
  adAccountIds?: Array<(string)>;
10058
+ /**
10059
+ * Force a fresh OAuth even when an account already exists. Normally the
10060
+ * endpoint returns `alreadyConnected: true` whenever a connected account
10061
+ * is found, keying off its active state rather than token liveness.
10062
+ * Set `force=true` to bypass that and always receivean `authUrl`.
10063
+ * Completing the returned OAuth refreshes the stored token
10064
+ * on the existing posting and ads accounts in place.
10065
+ *
10066
+ */
10067
+ force?: boolean;
10058
10068
  /**
10059
10069
  * Enable headless mode (same-token platforms only)
10060
10070
  */
@@ -22504,11 +22514,15 @@ type BulkUpdateAdCampaignStatusError = (unknown | {
22504
22514
  });
22505
22515
  type DuplicateAdCampaignData = {
22506
22516
  body: {
22507
- platform: 'facebook' | 'instagram' | 'tiktok';
22517
+ platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin';
22508
22518
  /**
22509
22519
  * Copy child ad sets + ads + creatives + targeting
22510
22520
  */
22511
22521
  deepCopy?: boolean;
22522
+ /**
22523
+ * ACTIVE = launch the clone immediately (spends the moment LinkedIn approves it). PAUSED = clone stays DRAFT, safe default. INHERITED_FROM_SOURCE = mirror each entity's source status per-entity. Duplicating an ACTIVE campaign this way starts a second front of spend.
22524
+ *
22525
+ */
22512
22526
  statusOption?: 'ACTIVE' | 'PAUSED' | 'INHERITED_FROM_SOURCE';
22513
22527
  /**
22514
22528
  * Reschedule the copied hierarchy's start time
@@ -23367,13 +23381,76 @@ type BoostPostData = {
23367
23381
  */
23368
23382
  endDate?: string;
23369
23383
  };
23384
+ /**
23385
+ * Same geo/demographic fields as the `TargetingSpec` used by /v1/ads/create.
23386
+ * Geo keys (`regions`/`cities`/`zips`/`metros`) resolve via
23387
+ * GET /v1/ads/targeting/search?dimension=geo. City radius and lat/lng
23388
+ * `customLocations` are Meta-only and preserve the boosted post's
23389
+ * social proof (the ad references the existing post).
23390
+ *
23391
+ */
23370
23392
  targeting?: {
23371
23393
  ageMin?: number;
23372
23394
  ageMax?: number;
23395
+ /**
23396
+ * Meta only.
23397
+ */
23398
+ gender?: 'all' | 'male' | 'female';
23399
+ /**
23400
+ * Meta locale ids (numeric), passed through as given.
23401
+ */
23402
+ languages?: Array<(string)>;
23373
23403
  /**
23374
23404
  * ISO country codes. Required for TikTok boosts (TikTok's ad group requires location_ids); optional on other platforms.
23375
23405
  */
23376
23406
  countries?: Array<(string)>;
23407
+ /**
23408
+ * Region/state targeting. `key` from /v1/ads/targeting/search?dimension=geo&geoType=region.
23409
+ */
23410
+ regions?: Array<{
23411
+ key: string;
23412
+ name?: string;
23413
+ }>;
23414
+ /**
23415
+ * City targeting. Optional `radius` + `distance_unit` extend beyond the city limits (both set together, Meta only).
23416
+ */
23417
+ cities?: Array<{
23418
+ key: string;
23419
+ name?: string;
23420
+ /**
23421
+ * Requires distance_unit.
23422
+ */
23423
+ radius?: number;
23424
+ distance_unit?: 'mile' | 'kilometer';
23425
+ }>;
23426
+ /**
23427
+ * Postal/ZIP targeting. `key` is the platform's postal location ID (e.g. Meta `US:94304`).
23428
+ */
23429
+ zips?: Array<{
23430
+ key: string;
23431
+ name?: string;
23432
+ }>;
23433
+ /**
23434
+ * DMA / metro-area targeting. `key` is the platform's metro ID (e.g. Meta `DMA:807`).
23435
+ */
23436
+ metros?: Array<{
23437
+ key: string;
23438
+ name?: string;
23439
+ }>;
23440
+ /**
23441
+ * Point-radius (lat/lng) targeting (Meta custom_locations). No geo `key` lookup needed.
23442
+ */
23443
+ customLocations?: Array<{
23444
+ latitude: number;
23445
+ longitude: number;
23446
+ radius: number;
23447
+ distanceUnit: 'mile' | 'kilometer';
23448
+ name?: string;
23449
+ /**
23450
+ * Optional label, sent to Meta as `address_string`.
23451
+ */
23452
+ address?: string;
23453
+ }>;
23377
23454
  /**
23378
23455
  * Interest objects from /v1/ads/interests. Each must include id and name.
23379
23456
  */
@@ -23386,6 +23463,17 @@ type BoostPostData = {
23386
23463
  */
23387
23464
  advantage_audience?: 0 | 1;
23388
23465
  };
23466
+ /**
23467
+ * Meta only. A verbatim Meta-native targeting spec (e.g.
23468
+ * `{ "geo_locations": { "cities": [{ "key": "...", "radius": 15, "distance_unit": "kilometer" }] } }`),
23469
+ * forwarded unchanged. Mutually exclusive with `targeting` (sending both is a 400).
23470
+ * Use for advanced fields the structured object does not expose (flexible_spec,
23471
+ * excluded audiences, business places).
23472
+ *
23473
+ */
23474
+ rawTargeting?: {
23475
+ [key: string]: unknown;
23476
+ };
23389
23477
  /**
23390
23478
  * Meta bid strategy applied to the ad set. On TikTok, mapped to
23391
23479
  * `bid_type` / `bid_price` / `deep_bid_type` automatically.
@@ -23669,22 +23757,31 @@ type CreateStandaloneAdData = {
23669
23757
  * to build N full ads sharing one ad set: create the first ad
23670
23758
  * via the normal shape, then attach the rest one call each.
23671
23759
  *
23672
- * Supported on Meta (facebook, instagram) and TikTok. On TikTok
23673
- * the `adSetId` is the ad group ID; the new ad inherits the
23674
- * ad group's bid + budget + targeting.
23760
+ * Supported on Meta (facebook, instagram), TikTok, and
23761
+ * LinkedIn. On TikTok the `adSetId` is the ad group ID; the
23762
+ * new ad inherits the ad group's bid + budget + targeting.
23763
+ * On LinkedIn the `adSetId` is the LinkedIn Campaign ID
23764
+ * (numeric); we attach a new Creative to that Campaign, so
23765
+ * the Campaign's `platformSpecificData` bidding, targeting,
23766
+ * budget and schedule are inherited (passing those fields
23767
+ * returns 400).
23675
23768
  *
23676
23769
  */
23677
23770
  adSetId?: string;
23678
23771
  /**
23679
- * Meta only. Add the new ad set under this EXISTING campaign
23680
- * instead of creating a new one (multi-ad-set audience testing).
23681
- * The new ad set's budget is matched to the campaign's mode
23682
- * automatically: for a CBO campaign (campaign-level budget) omit
23683
- * `budgetAmount`/`budgetType` the campaign owns the budget; for
23684
- * an ABO campaign pass them (they go on the new ad set). On
23685
- * failure only the new ad set is cleaned up; the existing campaign
23686
- * is left untouched and is never (re)activated. Mutually exclusive
23687
- * with `adSetId` and `creatives[]`.
23772
+ * Meta + LinkedIn. On Meta: add the new ad set under this
23773
+ * EXISTING campaign instead of creating a new one
23774
+ * (multi-ad-set audience testing). The new ad set's budget
23775
+ * is matched to the campaign's mode automatically: for a
23776
+ * CBO campaign (campaign-level budget) omit
23777
+ * `budgetAmount`/`budgetType` the campaign owns the
23778
+ * budget; for an ABO campaign pass them (they go on the new
23779
+ * ad set). On LinkedIn: create a new Campaign (and its
23780
+ * Creative) under this EXISTING CampaignGroup. On failure
23781
+ * only the entities we authored are cleaned up; the
23782
+ * pre-existing parent is left untouched and is never
23783
+ * (re)activated. Mutually exclusive with `adSetId` and
23784
+ * `creatives[]`.
23688
23785
  *
23689
23786
  */
23690
23787
  existingCampaignId?: string;
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.369",
39
+ version: "0.2.371",
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.369",
8
+ version: "0.2.371",
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.369",
3
+ "version": "0.2.371",
4
4
  "description": "The official Node.js library for the Zernio API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -6257,6 +6257,17 @@ export const bulkUpdateAdCampaignStatus = <ThrowOnError extends boolean = false>
6257
6257
  * carrying over budget / targeting / bid_type / bid_price /
6258
6258
  * deep_bid_type / creative fields. Spark Ad linkage (`tiktok_item_id`)
6259
6259
  * is preserved.
6260
+ * - **LinkedIn** has no native copy primitive; Zernio walks the source
6261
+ * CampaignGroup → Campaigns → Creatives and recreates each entity,
6262
+ * carrying over `type` / `costType` / `unitCost` /
6263
+ * `optimizationTargetType` / `creativeSelection` / `objectiveType` /
6264
+ * `format` / `dailyBudget` / `totalBudget` / `targetingCriteria` /
6265
+ * `runSchedule` and every Creative's `content` object verbatim.
6266
+ * `statusOption: INHERITED_FROM_SOURCE` is evaluated **per entity**:
6267
+ * any Group / Campaign / Creative whose source is `ACTIVE` gets its
6268
+ * clone activated too. Duplicating an ACTIVE campaign with
6269
+ * `INHERITED_FROM_SOURCE` starts a second front of spend the moment
6270
+ * the clone activates — the safe default is `PAUSED`.
6260
6271
  *
6261
6272
  * The new hierarchy is asynchronous to materialize in our DB — we
6262
6273
  * trigger sync discovery automatically. Set `syncAfter: false` to
@@ -9658,6 +9658,16 @@ export type ConnectAdsData = {
9658
9658
  *
9659
9659
  */
9660
9660
  adAccountIds?: Array<(string)>;
9661
+ /**
9662
+ * Force a fresh OAuth even when an account already exists. Normally the
9663
+ * endpoint returns `alreadyConnected: true` whenever a connected account
9664
+ * is found, keying off its active state rather than token liveness.
9665
+ * Set `force=true` to bypass that and always receivean `authUrl`.
9666
+ * Completing the returned OAuth refreshes the stored token
9667
+ * on the existing posting and ads accounts in place.
9668
+ *
9669
+ */
9670
+ force?: boolean;
9661
9671
  /**
9662
9672
  * Enable headless mode (same-token platforms only)
9663
9673
  */
@@ -23106,11 +23116,15 @@ export type BulkUpdateAdCampaignStatusError = (unknown | {
23106
23116
 
23107
23117
  export type DuplicateAdCampaignData = {
23108
23118
  body: {
23109
- platform: 'facebook' | 'instagram' | 'tiktok';
23119
+ platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin';
23110
23120
  /**
23111
23121
  * Copy child ad sets + ads + creatives + targeting
23112
23122
  */
23113
23123
  deepCopy?: boolean;
23124
+ /**
23125
+ * ACTIVE = launch the clone immediately (spends the moment LinkedIn approves it). PAUSED = clone stays DRAFT, safe default. INHERITED_FROM_SOURCE = mirror each entity's source status per-entity. Duplicating an ACTIVE campaign this way starts a second front of spend.
23126
+ *
23127
+ */
23114
23128
  statusOption?: 'ACTIVE' | 'PAUSED' | 'INHERITED_FROM_SOURCE';
23115
23129
  /**
23116
23130
  * Reschedule the copied hierarchy's start time
@@ -24026,13 +24040,76 @@ export type BoostPostData = {
24026
24040
  */
24027
24041
  endDate?: string;
24028
24042
  };
24043
+ /**
24044
+ * Same geo/demographic fields as the `TargetingSpec` used by /v1/ads/create.
24045
+ * Geo keys (`regions`/`cities`/`zips`/`metros`) resolve via
24046
+ * GET /v1/ads/targeting/search?dimension=geo. City radius and lat/lng
24047
+ * `customLocations` are Meta-only and preserve the boosted post's
24048
+ * social proof (the ad references the existing post).
24049
+ *
24050
+ */
24029
24051
  targeting?: {
24030
24052
  ageMin?: number;
24031
24053
  ageMax?: number;
24054
+ /**
24055
+ * Meta only.
24056
+ */
24057
+ gender?: 'all' | 'male' | 'female';
24058
+ /**
24059
+ * Meta locale ids (numeric), passed through as given.
24060
+ */
24061
+ languages?: Array<(string)>;
24032
24062
  /**
24033
24063
  * ISO country codes. Required for TikTok boosts (TikTok's ad group requires location_ids); optional on other platforms.
24034
24064
  */
24035
24065
  countries?: Array<(string)>;
24066
+ /**
24067
+ * Region/state targeting. `key` from /v1/ads/targeting/search?dimension=geo&geoType=region.
24068
+ */
24069
+ regions?: Array<{
24070
+ key: string;
24071
+ name?: string;
24072
+ }>;
24073
+ /**
24074
+ * City targeting. Optional `radius` + `distance_unit` extend beyond the city limits (both set together, Meta only).
24075
+ */
24076
+ cities?: Array<{
24077
+ key: string;
24078
+ name?: string;
24079
+ /**
24080
+ * Requires distance_unit.
24081
+ */
24082
+ radius?: number;
24083
+ distance_unit?: 'mile' | 'kilometer';
24084
+ }>;
24085
+ /**
24086
+ * Postal/ZIP targeting. `key` is the platform's postal location ID (e.g. Meta `US:94304`).
24087
+ */
24088
+ zips?: Array<{
24089
+ key: string;
24090
+ name?: string;
24091
+ }>;
24092
+ /**
24093
+ * DMA / metro-area targeting. `key` is the platform's metro ID (e.g. Meta `DMA:807`).
24094
+ */
24095
+ metros?: Array<{
24096
+ key: string;
24097
+ name?: string;
24098
+ }>;
24099
+ /**
24100
+ * Point-radius (lat/lng) targeting (Meta custom_locations). No geo `key` lookup needed.
24101
+ */
24102
+ customLocations?: Array<{
24103
+ latitude: number;
24104
+ longitude: number;
24105
+ radius: number;
24106
+ distanceUnit: 'mile' | 'kilometer';
24107
+ name?: string;
24108
+ /**
24109
+ * Optional label, sent to Meta as `address_string`.
24110
+ */
24111
+ address?: string;
24112
+ }>;
24036
24113
  /**
24037
24114
  * Interest objects from /v1/ads/interests. Each must include id and name.
24038
24115
  */
@@ -24045,6 +24122,17 @@ export type BoostPostData = {
24045
24122
  */
24046
24123
  advantage_audience?: 0 | 1;
24047
24124
  };
24125
+ /**
24126
+ * Meta only. A verbatim Meta-native targeting spec (e.g.
24127
+ * `{ "geo_locations": { "cities": [{ "key": "...", "radius": 15, "distance_unit": "kilometer" }] } }`),
24128
+ * forwarded unchanged. Mutually exclusive with `targeting` (sending both is a 400).
24129
+ * Use for advanced fields the structured object does not expose (flexible_spec,
24130
+ * excluded audiences, business places).
24131
+ *
24132
+ */
24133
+ rawTargeting?: {
24134
+ [key: string]: unknown;
24135
+ };
24048
24136
  /**
24049
24137
  * Meta bid strategy applied to the ad set. On TikTok, mapped to
24050
24138
  * `bid_type` / `bid_price` / `deep_bid_type` automatically.
@@ -24331,22 +24419,31 @@ export type CreateStandaloneAdData = {
24331
24419
  * to build N full ads sharing one ad set: create the first ad
24332
24420
  * via the normal shape, then attach the rest one call each.
24333
24421
  *
24334
- * Supported on Meta (facebook, instagram) and TikTok. On TikTok
24335
- * the `adSetId` is the ad group ID; the new ad inherits the
24336
- * ad group's bid + budget + targeting.
24422
+ * Supported on Meta (facebook, instagram), TikTok, and
24423
+ * LinkedIn. On TikTok the `adSetId` is the ad group ID; the
24424
+ * new ad inherits the ad group's bid + budget + targeting.
24425
+ * On LinkedIn the `adSetId` is the LinkedIn Campaign ID
24426
+ * (numeric); we attach a new Creative to that Campaign, so
24427
+ * the Campaign's `platformSpecificData` bidding, targeting,
24428
+ * budget and schedule are inherited (passing those fields
24429
+ * returns 400).
24337
24430
  *
24338
24431
  */
24339
24432
  adSetId?: string;
24340
24433
  /**
24341
- * Meta only. Add the new ad set under this EXISTING campaign
24342
- * instead of creating a new one (multi-ad-set audience testing).
24343
- * The new ad set's budget is matched to the campaign's mode
24344
- * automatically: for a CBO campaign (campaign-level budget) omit
24345
- * `budgetAmount`/`budgetType` the campaign owns the budget; for
24346
- * an ABO campaign pass them (they go on the new ad set). On
24347
- * failure only the new ad set is cleaned up; the existing campaign
24348
- * is left untouched and is never (re)activated. Mutually exclusive
24349
- * with `adSetId` and `creatives[]`.
24434
+ * Meta + LinkedIn. On Meta: add the new ad set under this
24435
+ * EXISTING campaign instead of creating a new one
24436
+ * (multi-ad-set audience testing). The new ad set's budget
24437
+ * is matched to the campaign's mode automatically: for a
24438
+ * CBO campaign (campaign-level budget) omit
24439
+ * `budgetAmount`/`budgetType` the campaign owns the
24440
+ * budget; for an ABO campaign pass them (they go on the new
24441
+ * ad set). On LinkedIn: create a new Campaign (and its
24442
+ * Creative) under this EXISTING CampaignGroup. On failure
24443
+ * only the entities we authored are cleaned up; the
24444
+ * pre-existing parent is left untouched and is never
24445
+ * (re)activated. Mutually exclusive with `adSetId` and
24446
+ * `creatives[]`.
24350
24447
  *
24351
24448
  */
24352
24449
  existingCampaignId?: string;