@getlatedev/node 0.2.1349 → 0.2.1351
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/README.md +2 -0
- package/dist/index.d.mts +174 -15
- package/dist/index.d.ts +174 -15
- package/dist/index.js +19 -1
- package/dist/index.mjs +19 -1
- package/package.json +1 -1
- package/src/client.ts +8 -0
- package/src/generated/sdk.gen.ts +33 -2
- package/src/generated/types.gen.ts +179 -14
|
@@ -659,6 +659,37 @@ export type AdAnalyticsResponse = {
|
|
|
659
659
|
};
|
|
660
660
|
};
|
|
661
661
|
|
|
662
|
+
/**
|
|
663
|
+
* What the create filled in for fields the request left out. Empty when every field was sent. A passing validateOnly returns it too, so a dry run previews these values before anything is created.
|
|
664
|
+
*/
|
|
665
|
+
export type AdAppliedDefaults = {
|
|
666
|
+
/**
|
|
667
|
+
* Sent when `name` was omitted: `Ad <YYYY-MM-DD HH:MM:SS>` in UTC.
|
|
668
|
+
*/
|
|
669
|
+
name?: string;
|
|
670
|
+
/**
|
|
671
|
+
* Sent when `goal` was omitted. `lead_generation` with a `leadGenFormId`; `app_promotion` when `promotedObject` names an app; `conversions` with `promotedObject.pixelId` and `customEventType`; `traffic` when the ad has a link (`linkUrl`, a carousel card, `creatives[].linkUrl`, `dynamicCreative.linkUrls` or a LinkedIn carousel card); otherwise `engagement`. Each only when the platform offers it, falling back to `engagement`, then `awareness`, then the platform's first goal. Never inferred with `existingCampaignId`, `smartPlus` or the LinkedIn spotlight, follower and jobs formats: those still return 400 without `goal`.
|
|
672
|
+
*/
|
|
673
|
+
goal?: string;
|
|
674
|
+
/**
|
|
675
|
+
* Sent when `budgetAmount` came without `budgetType`.
|
|
676
|
+
*/
|
|
677
|
+
budgetType?: 'daily';
|
|
678
|
+
/**
|
|
679
|
+
* Sent when a lifetime budget had no `endDate`: 7 days after the start. A start with an offset (or no start) gets a UTC instant; an offset-less start gets an offset-less end, read in the ad account timezone like the start; a date-only start gets the date 6 days later, which runs to 23:59:59. A daily budget never gets one and runs until paused.
|
|
680
|
+
*/
|
|
681
|
+
endDate?: string;
|
|
682
|
+
/**
|
|
683
|
+
* Sent when the request sent no countries and the ad gets the long-standing United States default. Not sent on attach, Google Performance Max or Demand Gen, or a Google ad group joining `existingCampaignId`, which keep their own geo.
|
|
684
|
+
*/
|
|
685
|
+
countries?: Array<(string)>;
|
|
686
|
+
};
|
|
687
|
+
|
|
688
|
+
/**
|
|
689
|
+
* Sent when `budgetAmount` came without `budgetType`.
|
|
690
|
+
*/
|
|
691
|
+
export type budgetType = 'daily';
|
|
692
|
+
|
|
662
693
|
/**
|
|
663
694
|
* Budget amount in the ad account's native currency (see the campaign's `currency` field for the code).
|
|
664
695
|
*/
|
|
@@ -1707,6 +1738,50 @@ export type AdRuleSchedule = {
|
|
|
1707
1738
|
*/
|
|
1708
1739
|
export type everyMinutes = 60 | 180 | 360 | 720 | 1440;
|
|
1709
1740
|
|
|
1741
|
+
export type AdsAlert = {
|
|
1742
|
+
/**
|
|
1743
|
+
* Stable for the same problem on the same entity. Pass it to POST /v1/ads/alerts/{alertId}/dismiss.
|
|
1744
|
+
*/
|
|
1745
|
+
id?: string;
|
|
1746
|
+
kind?: 'ad_rejected' | 'delivery_issue' | 'payment' | 'budget_limited' | 'spend_no_results';
|
|
1747
|
+
severity?: 'error' | 'warning' | 'info';
|
|
1748
|
+
title?: string;
|
|
1749
|
+
/**
|
|
1750
|
+
* What happened, in plain words. For a rejection or delivery issue, the platform's own reason when it gave one.
|
|
1751
|
+
*/
|
|
1752
|
+
message?: string;
|
|
1753
|
+
platform?: string;
|
|
1754
|
+
platformAdAccountId?: string;
|
|
1755
|
+
entity?: {
|
|
1756
|
+
level?: 'ad_account' | 'campaign' | 'ad_set' | 'ad';
|
|
1757
|
+
/**
|
|
1758
|
+
* The platform id of the entity.
|
|
1759
|
+
*/
|
|
1760
|
+
id?: string;
|
|
1761
|
+
name?: (string) | null;
|
|
1762
|
+
};
|
|
1763
|
+
/**
|
|
1764
|
+
* The Zernio ad id when the entity is an ad, for GET /v1/ads/{adId}.
|
|
1765
|
+
*/
|
|
1766
|
+
adId?: string;
|
|
1767
|
+
currency?: (string) | null;
|
|
1768
|
+
detectedAt?: string;
|
|
1769
|
+
/**
|
|
1770
|
+
* Where to fix it on the platform, when there is such a place.
|
|
1771
|
+
*/
|
|
1772
|
+
fix?: {
|
|
1773
|
+
label?: string;
|
|
1774
|
+
url?: string;
|
|
1775
|
+
};
|
|
1776
|
+
dismissed?: boolean;
|
|
1777
|
+
};
|
|
1778
|
+
|
|
1779
|
+
export type kind = 'ad_rejected' | 'delivery_issue' | 'payment' | 'budget_limited' | 'spend_no_results';
|
|
1780
|
+
|
|
1781
|
+
export type severity = 'error' | 'warning' | 'info';
|
|
1782
|
+
|
|
1783
|
+
export type level = 'ad_account' | 'campaign' | 'ad_set' | 'ad';
|
|
1784
|
+
|
|
1710
1785
|
/**
|
|
1711
1786
|
* One ad schedule window as Google stores it. Half-open: it is exclusive of the end minute, so 09:00-12:00 and 12:00-17:00 are adjacent, not overlapping.
|
|
1712
1787
|
*/
|
|
@@ -1752,6 +1827,19 @@ export type AdsTimelineResponse = {
|
|
|
1752
1827
|
* Meta only. Present and true while historical data is being backfilled.
|
|
1753
1828
|
*/
|
|
1754
1829
|
backfillPending?: boolean;
|
|
1830
|
+
/**
|
|
1831
|
+
* Only with `compare=previous`. The daily rows of `previousRange`, in the same shape as `rows`.
|
|
1832
|
+
*/
|
|
1833
|
+
previousRows?: Array<{
|
|
1834
|
+
[key: string]: unknown;
|
|
1835
|
+
}>;
|
|
1836
|
+
/**
|
|
1837
|
+
* Only with `compare=previous`. The period of the same length that ends the day before `fromDate`.
|
|
1838
|
+
*/
|
|
1839
|
+
previousRange?: {
|
|
1840
|
+
fromDate?: string;
|
|
1841
|
+
toDate?: string;
|
|
1842
|
+
};
|
|
1755
1843
|
rows?: Array<{
|
|
1756
1844
|
date?: string;
|
|
1757
1845
|
/**
|
|
@@ -1892,6 +1980,10 @@ export type AdTreeAdSet = {
|
|
|
1892
1980
|
pacing?: string;
|
|
1893
1981
|
} | null;
|
|
1894
1982
|
metrics?: AdMetrics;
|
|
1983
|
+
/**
|
|
1984
|
+
* Only with `compare=previous`. The same metrics over `previousRange`.
|
|
1985
|
+
*/
|
|
1986
|
+
previousMetrics?: (AdMetrics);
|
|
1895
1987
|
/**
|
|
1896
1988
|
* What the delivery system optimizes for. Meta ad set optimization goal (e.g. OFFSITE_CONVERSIONS, VALUE, LEAD_GENERATION), or on LinkedIn the campaign's effective optimizationTargetType (NONE means manual bidding). See the `optimizationGoal` field on `Ad` for the full value spaces.
|
|
1897
1989
|
*/
|
|
@@ -2001,6 +2093,10 @@ export type AdTreeCampaign = {
|
|
|
2001
2093
|
*/
|
|
2002
2094
|
currency?: (string) | null;
|
|
2003
2095
|
metrics?: AdMetrics;
|
|
2096
|
+
/**
|
|
2097
|
+
* Only with `compare=previous`. The same metrics over `previousRange`.
|
|
2098
|
+
*/
|
|
2099
|
+
previousMetrics?: (AdMetrics);
|
|
2004
2100
|
platformAdAccountId?: string;
|
|
2005
2101
|
/**
|
|
2006
2102
|
* Human-readable advertiser/account name from the platform. Refreshed on every sync.
|
|
@@ -2057,6 +2153,17 @@ export type AdTreeCampaign = {
|
|
|
2057
2153
|
export type AdTreeResponse = {
|
|
2058
2154
|
campaigns?: Array<AdTreeCampaign>;
|
|
2059
2155
|
pagination?: Pagination;
|
|
2156
|
+
/**
|
|
2157
|
+
* When the most recently synced ad on this page was last read from the platform. Null before the first sync.
|
|
2158
|
+
*/
|
|
2159
|
+
syncedAt?: (string) | null;
|
|
2160
|
+
/**
|
|
2161
|
+
* Only with `compare=previous`. The range `previousMetrics` covers.
|
|
2162
|
+
*/
|
|
2163
|
+
previousRange?: {
|
|
2164
|
+
fromDate?: string;
|
|
2165
|
+
toDate?: string;
|
|
2166
|
+
};
|
|
2060
2167
|
/**
|
|
2061
2168
|
* Meta only. Present and true while historical data is being backfilled.
|
|
2062
2169
|
*/
|
|
@@ -6106,7 +6213,7 @@ export type CtwaAdRequestBody = {
|
|
|
6106
6213
|
/**
|
|
6107
6214
|
* Required unless `adSetId` is set or `existingCampaignId` names a campaign with a campaign budget. `lifetime` requires `endDate`.
|
|
6108
6215
|
*/
|
|
6109
|
-
export type
|
|
6216
|
+
export type budgetType2 = 'daily' | 'lifetime';
|
|
6110
6217
|
|
|
6111
6218
|
/**
|
|
6112
6219
|
* Restrict the audience by gender (Meta `genders`). Omit or send all for everyone; all is ignored in adSetId attach mode. Stored on the ad and read back in `targeting.gender`.
|
|
@@ -8050,7 +8157,7 @@ export type GoogleListingGroupDimension = {
|
|
|
8050
8157
|
};
|
|
8051
8158
|
};
|
|
8052
8159
|
|
|
8053
|
-
export type
|
|
8160
|
+
export type level2 = 'LEVEL1' | 'LEVEL2' | 'LEVEL3' | 'LEVEL4' | 'LEVEL5';
|
|
8054
8161
|
|
|
8055
8162
|
export type condition = 'NEW' | 'REFURBISHED' | 'USED';
|
|
8056
8163
|
|
|
@@ -8536,7 +8643,7 @@ export type ImessageSenderLifecycle = {
|
|
|
8536
8643
|
createdAt?: string;
|
|
8537
8644
|
};
|
|
8538
8645
|
|
|
8539
|
-
export type
|
|
8646
|
+
export type kind2 = 'phone' | 'email';
|
|
8540
8647
|
|
|
8541
8648
|
export type region = 'US' | 'GB';
|
|
8542
8649
|
|
|
@@ -9463,7 +9570,7 @@ export type InstagramVideoFallback = {
|
|
|
9463
9570
|
};
|
|
9464
9571
|
};
|
|
9465
9572
|
|
|
9466
|
-
export type
|
|
9573
|
+
export type kind3 = 'instagram_video_reuploaded' | 'instagram_video_rehosted_copy';
|
|
9467
9574
|
|
|
9468
9575
|
/**
|
|
9469
9576
|
* A Google Search keyword: a bare string (BROAD match), or an object naming the match type.
|
|
@@ -13354,7 +13461,7 @@ export type platform14 = 'metaads' | 'openaiads' | 'tiktokads' | 'googleads' | '
|
|
|
13354
13461
|
/**
|
|
13355
13462
|
* Platform-native flavor of the tag (Meta: `pixel`).
|
|
13356
13463
|
*/
|
|
13357
|
-
export type
|
|
13464
|
+
export type kind4 = 'pixel' | 'tag' | 'insight_tag';
|
|
13358
13465
|
|
|
13359
13466
|
/**
|
|
13360
13467
|
* One health check the platform runs on a tracking tag.
|
|
@@ -14715,7 +14822,7 @@ export type event7 = 'ad.delivery_issue';
|
|
|
14715
14822
|
/**
|
|
14716
14823
|
* Always `AD`.
|
|
14717
14824
|
*/
|
|
14718
|
-
export type
|
|
14825
|
+
export type level3 = 'AD';
|
|
14719
14826
|
|
|
14720
14827
|
/**
|
|
14721
14828
|
* Webhook payload for the `ad.review.approved` and `ad.review.rejected` events.
|
|
@@ -14923,7 +15030,7 @@ export type event9 = 'ad_rule.triggered';
|
|
|
14923
15030
|
/**
|
|
14924
15031
|
* Whether the rule evaluates campaigns or ad sets.
|
|
14925
15032
|
*/
|
|
14926
|
-
export type
|
|
15033
|
+
export type level4 = 'campaign' | 'adset';
|
|
14927
15034
|
|
|
14928
15035
|
/**
|
|
14929
15036
|
* Webhook payload for the `ad.status_changed` event. Currently emitted
|
|
@@ -15055,7 +15162,7 @@ export type event10 = 'ad.status_changed';
|
|
|
15055
15162
|
/**
|
|
15056
15163
|
* Hierarchy level the status applies to. Mirrors Meta's `level`. Creative-level events are not forwarded.
|
|
15057
15164
|
*/
|
|
15058
|
-
export type
|
|
15165
|
+
export type level5 = 'CAMPAIGN' | 'AD_SET' | 'AD';
|
|
15059
15166
|
|
|
15060
15167
|
/**
|
|
15061
15168
|
* Webhook payload for the `ad.video.processed` event. Fires once per
|
|
@@ -15494,7 +15601,7 @@ export type event18 = 'campaign.budget.depleted';
|
|
|
15494
15601
|
/**
|
|
15495
15602
|
* Always `CAMPAIGN`.
|
|
15496
15603
|
*/
|
|
15497
|
-
export type
|
|
15604
|
+
export type level6 = 'CAMPAIGN';
|
|
15498
15605
|
|
|
15499
15606
|
/**
|
|
15500
15607
|
* Webhook payload for comment received events (Instagram, Facebook, Threads, YouTube, LinkedIn, Bluesky, Reddit, TikTok). X/Twitter does NOT fire this event. TikTok events carry only the author id: the comment.update webhook has no username, picture or owner flag.
|
|
@@ -46429,6 +46536,10 @@ export type GetAdTreeData = {
|
|
|
46429
46536
|
* Restrict the tree to one or more campaigns by platform campaign id (the id the platform assigns, e.g. Meta's numeric campaign id). Comma-separate up to 100 ids (`?campaignId=123,456`). Filters the campaign set itself, so it works regardless of account size and pagination. Pass this when you already hold campaign ids (for example from an `ad.status_changed` webhook) instead of paging the whole tree.
|
|
46430
46537
|
*/
|
|
46431
46538
|
campaignId?: string;
|
|
46539
|
+
/**
|
|
46540
|
+
* Set to `previous` to also read the period of the same length that ends the day before `fromDate`. Every campaign, ad set and ad gains `previousMetrics` (same fields as `metrics`) and the response gains `previousRange`, so a table can show the change against the previous period in one call.
|
|
46541
|
+
*/
|
|
46542
|
+
compare?: 'previous';
|
|
46432
46543
|
/**
|
|
46433
46544
|
* Which tree levels get the `daily[]` series when `timeIncrement=1`. `campaign` (default) attaches it on campaign nodes only: the common per-campaign-trend case, and the smallest payload. `adset` adds it on ad sets too; `ad` adds it on every ad in `ads[]` as well (heaviest: a long range × up to 100 ads per ad set). Scope with `campaignId` to keep `ad`-level responses small. Ignored when `timeIncrement` is unset.
|
|
46434
46545
|
*/
|
|
@@ -46512,6 +46623,10 @@ export type GetAdsTimelineData = {
|
|
|
46512
46623
|
* Optional platform-native ad account ID (e.g. Meta `act_…`, TikTok advertiser ID). Use when the connection wraps multiple platform ad accounts and the chart should show one only. Note: rows ingested before 2026-05-13 don't carry this column; the recurring 7-day re-sync repopulates them naturally.
|
|
46513
46624
|
*/
|
|
46514
46625
|
adAccountId?: string;
|
|
46626
|
+
/**
|
|
46627
|
+
* Set to `previous` to also return `previousRows` for the period of the same length that ends the day before `fromDate`, with that period as `previousRange`. Needs a `fromDate` (sent or defaulted); `toDate` alone answers 400.
|
|
46628
|
+
*/
|
|
46629
|
+
compare?: 'previous';
|
|
46515
46630
|
/**
|
|
46516
46631
|
* Inclusive start of metrics range (YYYY-MM-DD). Defaults to 90 days ago.
|
|
46517
46632
|
*/
|
|
@@ -48270,6 +48385,50 @@ export type ListAdsBusinessCentersResponse = ({
|
|
|
48270
48385
|
|
|
48271
48386
|
export type ListAdsBusinessCentersError = (ErrorResponse | unknown);
|
|
48272
48387
|
|
|
48388
|
+
export type ListAdsAlertsData = {
|
|
48389
|
+
query?: {
|
|
48390
|
+
/**
|
|
48391
|
+
* Only alerts of this ads connection (sibling-expanded like /v1/ads/tree). Omit for every ad account the API key can reach.
|
|
48392
|
+
*/
|
|
48393
|
+
accountId?: string;
|
|
48394
|
+
/**
|
|
48395
|
+
* Also return dismissed alerts, with `dismissed: true`.
|
|
48396
|
+
*/
|
|
48397
|
+
includeDismissed?: boolean;
|
|
48398
|
+
};
|
|
48399
|
+
};
|
|
48400
|
+
|
|
48401
|
+
export type ListAdsAlertsResponse = ({
|
|
48402
|
+
alerts?: Array<AdsAlert>;
|
|
48403
|
+
/**
|
|
48404
|
+
* Open (not dismissed) alerts per severity.
|
|
48405
|
+
*/
|
|
48406
|
+
counts?: {
|
|
48407
|
+
error?: number;
|
|
48408
|
+
warning?: number;
|
|
48409
|
+
info?: number;
|
|
48410
|
+
};
|
|
48411
|
+
});
|
|
48412
|
+
|
|
48413
|
+
export type ListAdsAlertsError = (ErrorResponse | unknown);
|
|
48414
|
+
|
|
48415
|
+
export type DismissAdsAlertData = {
|
|
48416
|
+
path: {
|
|
48417
|
+
/**
|
|
48418
|
+
* The `id` of an alert from GET /v1/ads/alerts.
|
|
48419
|
+
*/
|
|
48420
|
+
alertId: string;
|
|
48421
|
+
};
|
|
48422
|
+
};
|
|
48423
|
+
|
|
48424
|
+
export type DismissAdsAlertResponse = ({
|
|
48425
|
+
id?: string;
|
|
48426
|
+
dismissed?: boolean;
|
|
48427
|
+
dismissedUntil?: string;
|
|
48428
|
+
});
|
|
48429
|
+
|
|
48430
|
+
export type DismissAdsAlertError = (ErrorResponse | unknown);
|
|
48431
|
+
|
|
48273
48432
|
export type GetAdsActivityLogData = {
|
|
48274
48433
|
query: {
|
|
48275
48434
|
/**
|
|
@@ -52281,7 +52440,10 @@ export type CreateStandaloneAdData = {
|
|
|
52281
52440
|
body: {
|
|
52282
52441
|
accountId: string;
|
|
52283
52442
|
adAccountId: string;
|
|
52284
|
-
|
|
52443
|
+
/**
|
|
52444
|
+
* Omitted, the ad is named `Ad <YYYY-MM-DD HH:MM:SS>` (UTC) and the response reports it in `appliedDefaults.name`.
|
|
52445
|
+
*/
|
|
52446
|
+
name?: string;
|
|
52285
52447
|
/**
|
|
52286
52448
|
* Meta, Reddit and Google. Exact campaign name. Overrides the default `<name> - Campaign`. Ignored when the request joins an existing campaign or ad set. Google: no line breaks and at most 255 characters, checked before calling Google; names are unique in the Google Ads account, and on Search and Display a taken name is a 400 naming this field.
|
|
52287
52449
|
*/
|
|
@@ -52296,7 +52458,7 @@ export type CreateStandaloneAdData = {
|
|
|
52296
52458
|
adName?: string;
|
|
52297
52459
|
tracking?: AdTracking;
|
|
52298
52460
|
/**
|
|
52299
|
-
*
|
|
52461
|
+
* Available goals vary by platform. Omitted, it is inferred from the ad (see `appliedDefaults.goal` in the response); the attach shape inherits it from the ad set.
|
|
52300
52462
|
*
|
|
52301
52463
|
* **Meta**
|
|
52302
52464
|
* - `conversions`: OUTCOME_SALES. Requires `promotedObject.pixelId` and `promotedObject.customEventType` with a commerce event such as PURCHASE or START_TRIAL, or `promotedObject.customConversionId` to optimise against a Custom Conversion, or `customEventType: OTHER` + `customEventStr` to optimise against a pixel custom event.
|
|
@@ -52393,7 +52555,7 @@ export type CreateStandaloneAdData = {
|
|
|
52393
52555
|
*/
|
|
52394
52556
|
budgetAmount?: number;
|
|
52395
52557
|
/**
|
|
52396
|
-
*
|
|
52558
|
+
* Defaults to daily when `budgetAmount` is sent without it (reported in `appliedDefaults.budgetType`). Inherited on attach. OpenAI Ads accepts both as the campaign's single spend cap. A lifetime cap can later switch to daily with PUT /v1/ads/campaigns/{campaignId}, but OpenAI never switches a daily cap back to lifetime (422). Automatic bidding (Maximize Results) needs a daily budget. Reddit Ads: the ad group's daily or lifetime spend goal.
|
|
52397
52559
|
*/
|
|
52398
52560
|
budgetType?: 'daily' | 'lifetime';
|
|
52399
52561
|
/**
|
|
@@ -52920,7 +53082,7 @@ export type CreateStandaloneAdData = {
|
|
|
52920
53082
|
[key: string]: (string | number);
|
|
52921
53083
|
};
|
|
52922
53084
|
/**
|
|
52923
|
-
*
|
|
53085
|
+
* Omitted on a lifetime budget, the ad ends 7 days after it starts (reported in `appliedDefaults.endDate`); a daily budget without one runs until paused. Read like `startDate` (account timezone on Meta, TikTok, X, Pinterest, OpenAI and Reddit; whole account-local days on Google; UTC on LinkedIn), and a date-only end runs to 23:59:59 local.
|
|
52924
53086
|
*/
|
|
52925
53087
|
endDate?: string;
|
|
52926
53088
|
/**
|
|
@@ -53448,7 +53610,7 @@ export type CreateStandaloneAdData = {
|
|
|
53448
53610
|
* Targeting works like on any TikTok ad (defaults to `countries: ["US"]` when
|
|
53449
53611
|
* omitted); TikTok automates delivery within it.
|
|
53450
53612
|
* The budget lives on the Smart+ campaign (Campaign Budget Optimization); a `lifetime`
|
|
53451
|
-
* budget
|
|
53613
|
+
* budget without `endDate` ends 7 days after it starts. Smart+ needs `goal` sent, it is never inferred. Cannot be combined with `adSetId`.
|
|
53452
53614
|
*
|
|
53453
53615
|
*/
|
|
53454
53616
|
smartPlus?: boolean;
|
|
@@ -53483,6 +53645,7 @@ export type CreateStandaloneAdResponse = ({
|
|
|
53483
53645
|
* Always true in a validate-only response.
|
|
53484
53646
|
*/
|
|
53485
53647
|
validateOnly?: boolean;
|
|
53648
|
+
appliedDefaults?: AdAppliedDefaults;
|
|
53486
53649
|
results?: Array<{
|
|
53487
53650
|
node?: 'campaign' | 'adSet' | 'creative' | 'ad' | 'performanceMaxCampaign';
|
|
53488
53651
|
status?: 'validated' | 'skipped' | 'unverified';
|
|
@@ -53494,11 +53657,13 @@ export type CreateStandaloneAdResponse = ({
|
|
|
53494
53657
|
message?: string;
|
|
53495
53658
|
} | ({
|
|
53496
53659
|
ad?: Ad;
|
|
53660
|
+
appliedDefaults?: AdAppliedDefaults;
|
|
53497
53661
|
message?: string;
|
|
53498
53662
|
} | {
|
|
53499
53663
|
ads?: Array<Ad>;
|
|
53500
53664
|
platformCampaignId?: string;
|
|
53501
53665
|
platformAdSetId?: string;
|
|
53666
|
+
appliedDefaults?: AdAppliedDefaults;
|
|
53502
53667
|
message?: string;
|
|
53503
53668
|
}));
|
|
53504
53669
|
|