@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 +110 -13
- package/dist/index.d.ts +110 -13
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
- package/src/generated/sdk.gen.ts +11 -0
- package/src/generated/types.gen.ts +110 -13
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)
|
|
23673
|
-
* the `adSetId` is the ad group ID; 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
|
|
23680
|
-
* instead of creating a new one
|
|
23681
|
-
* The new ad set's budget
|
|
23682
|
-
*
|
|
23683
|
-
*
|
|
23684
|
-
*
|
|
23685
|
-
*
|
|
23686
|
-
*
|
|
23687
|
-
*
|
|
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)
|
|
23673
|
-
* the `adSetId` is the ad group ID; 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
|
|
23680
|
-
* instead of creating a new one
|
|
23681
|
-
* The new ad set's budget
|
|
23682
|
-
*
|
|
23683
|
-
*
|
|
23684
|
-
*
|
|
23685
|
-
*
|
|
23686
|
-
*
|
|
23687
|
-
*
|
|
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.
|
|
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.
|
|
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
package/src/generated/sdk.gen.ts
CHANGED
|
@@ -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)
|
|
24335
|
-
* the `adSetId` is the ad group ID; 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
|
|
24342
|
-
* instead of creating a new one
|
|
24343
|
-
* The new ad set's budget
|
|
24344
|
-
*
|
|
24345
|
-
*
|
|
24346
|
-
*
|
|
24347
|
-
*
|
|
24348
|
-
*
|
|
24349
|
-
*
|
|
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;
|