@zernio/node 0.2.79 → 0.2.81

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
@@ -12166,14 +12166,20 @@ type CreateStandaloneAdData = {
12166
12166
  adAccountId: string;
12167
12167
  name: string;
12168
12168
  /**
12169
- * Available goals vary by platform. Meta (Facebook/Instagram) and TikTok support all 7. LinkedIn supports all except app_promotion. Twitter/X supports engagement, traffic, awareness, video_views, app_promotion. Pinterest and Google Ads support only engagement, traffic, awareness, video_views.
12169
+ * Required on legacy + multi-creative shapes. Inherited from the ad set on the attach shape. Available goals vary by platform.
12170
12170
  */
12171
- goal: 'engagement' | 'traffic' | 'awareness' | 'video_views' | 'lead_generation' | 'conversions' | 'app_promotion';
12172
- budgetAmount: number;
12173
- budgetType: 'daily' | 'lifetime';
12171
+ goal?: 'engagement' | 'traffic' | 'awareness' | 'video_views' | 'lead_generation' | 'conversions' | 'app_promotion';
12172
+ /**
12173
+ * Required on legacy + multi-creative shapes. Inherited on attach.
12174
+ */
12175
+ budgetAmount?: number;
12176
+ /**
12177
+ * Required on legacy + multi-creative shapes. Inherited on attach.
12178
+ */
12179
+ budgetType?: 'daily' | 'lifetime';
12174
12180
  currency?: string;
12175
12181
  /**
12176
- * Required for most platforms. Max: Meta=255, Google=30, Pinterest=100
12182
+ * Required on legacy + attach shapes (skip for multi-creative — use `creatives[].headline`). Max: Meta=255, Google=30, Pinterest=100
12177
12183
  */
12178
12184
  headline?: string;
12179
12185
  /**
@@ -12181,18 +12187,43 @@ type CreateStandaloneAdData = {
12181
12187
  */
12182
12188
  longHeadline?: string;
12183
12189
  /**
12184
- * Max: Google=90, Pinterest=500
12190
+ * Required on legacy + attach shapes. Max: Google=90, Pinterest=500
12185
12191
  */
12186
- body: string;
12192
+ body?: string;
12187
12193
  /**
12188
- * Meta only
12194
+ * Required on legacy + attach shapes. Meta only.
12189
12195
  */
12190
12196
  callToAction?: 'LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE';
12197
+ /**
12198
+ * Required on legacy + attach shapes. Skip for multi-creative.
12199
+ */
12191
12200
  linkUrl?: string;
12192
12201
  /**
12193
- * Image URL (or video URL for TikTok). Not required for Google Search campaigns.
12202
+ * Required on legacy + attach shapes. Not required for Google Search campaigns.
12194
12203
  */
12195
12204
  imageUrl?: string;
12205
+ /**
12206
+ * Meta-only. When present, switches to the multi-creative shape:
12207
+ * creates 1 campaign + 1 ad set + N ads (one per entry here).
12208
+ * Top-level `headline` / `body` / `imageUrl` / `linkUrl` /
12209
+ * `callToAction` are ignored in this mode. Mutually exclusive with `adSetId`.
12210
+ *
12211
+ */
12212
+ creatives?: Array<{
12213
+ headline: string;
12214
+ body: string;
12215
+ imageUrl: string;
12216
+ linkUrl: string;
12217
+ callToAction: 'LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE';
12218
+ }>;
12219
+ /**
12220
+ * Meta-only. When present, switches to the attach shape: adds
12221
+ * one new ad to this existing ad set without creating a new
12222
+ * campaign. Budget, targeting, goal, and schedule are inherited
12223
+ * from the ad set on Meta. Mutually exclusive with `creatives[]`.
12224
+ *
12225
+ */
12226
+ adSetId?: string;
12196
12227
  /**
12197
12228
  * Google Display only
12198
12229
  */
@@ -12241,10 +12272,15 @@ type CreateStandaloneAdData = {
12241
12272
  advantageAudience?: 0 | 1;
12242
12273
  };
12243
12274
  };
12244
- type CreateStandaloneAdResponse = ({
12275
+ type CreateStandaloneAdResponse = (({
12245
12276
  ad?: Ad;
12246
12277
  message?: string;
12247
- });
12278
+ } | {
12279
+ ads?: Array<Ad>;
12280
+ platformCampaignId?: string;
12281
+ platformAdSetId?: string;
12282
+ message?: string;
12283
+ }));
12248
12284
  type CreateStandaloneAdError = (unknown | {
12249
12285
  error?: string;
12250
12286
  });
package/dist/index.d.ts CHANGED
@@ -12166,14 +12166,20 @@ type CreateStandaloneAdData = {
12166
12166
  adAccountId: string;
12167
12167
  name: string;
12168
12168
  /**
12169
- * Available goals vary by platform. Meta (Facebook/Instagram) and TikTok support all 7. LinkedIn supports all except app_promotion. Twitter/X supports engagement, traffic, awareness, video_views, app_promotion. Pinterest and Google Ads support only engagement, traffic, awareness, video_views.
12169
+ * Required on legacy + multi-creative shapes. Inherited from the ad set on the attach shape. Available goals vary by platform.
12170
12170
  */
12171
- goal: 'engagement' | 'traffic' | 'awareness' | 'video_views' | 'lead_generation' | 'conversions' | 'app_promotion';
12172
- budgetAmount: number;
12173
- budgetType: 'daily' | 'lifetime';
12171
+ goal?: 'engagement' | 'traffic' | 'awareness' | 'video_views' | 'lead_generation' | 'conversions' | 'app_promotion';
12172
+ /**
12173
+ * Required on legacy + multi-creative shapes. Inherited on attach.
12174
+ */
12175
+ budgetAmount?: number;
12176
+ /**
12177
+ * Required on legacy + multi-creative shapes. Inherited on attach.
12178
+ */
12179
+ budgetType?: 'daily' | 'lifetime';
12174
12180
  currency?: string;
12175
12181
  /**
12176
- * Required for most platforms. Max: Meta=255, Google=30, Pinterest=100
12182
+ * Required on legacy + attach shapes (skip for multi-creative — use `creatives[].headline`). Max: Meta=255, Google=30, Pinterest=100
12177
12183
  */
12178
12184
  headline?: string;
12179
12185
  /**
@@ -12181,18 +12187,43 @@ type CreateStandaloneAdData = {
12181
12187
  */
12182
12188
  longHeadline?: string;
12183
12189
  /**
12184
- * Max: Google=90, Pinterest=500
12190
+ * Required on legacy + attach shapes. Max: Google=90, Pinterest=500
12185
12191
  */
12186
- body: string;
12192
+ body?: string;
12187
12193
  /**
12188
- * Meta only
12194
+ * Required on legacy + attach shapes. Meta only.
12189
12195
  */
12190
12196
  callToAction?: 'LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE';
12197
+ /**
12198
+ * Required on legacy + attach shapes. Skip for multi-creative.
12199
+ */
12191
12200
  linkUrl?: string;
12192
12201
  /**
12193
- * Image URL (or video URL for TikTok). Not required for Google Search campaigns.
12202
+ * Required on legacy + attach shapes. Not required for Google Search campaigns.
12194
12203
  */
12195
12204
  imageUrl?: string;
12205
+ /**
12206
+ * Meta-only. When present, switches to the multi-creative shape:
12207
+ * creates 1 campaign + 1 ad set + N ads (one per entry here).
12208
+ * Top-level `headline` / `body` / `imageUrl` / `linkUrl` /
12209
+ * `callToAction` are ignored in this mode. Mutually exclusive with `adSetId`.
12210
+ *
12211
+ */
12212
+ creatives?: Array<{
12213
+ headline: string;
12214
+ body: string;
12215
+ imageUrl: string;
12216
+ linkUrl: string;
12217
+ callToAction: 'LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE';
12218
+ }>;
12219
+ /**
12220
+ * Meta-only. When present, switches to the attach shape: adds
12221
+ * one new ad to this existing ad set without creating a new
12222
+ * campaign. Budget, targeting, goal, and schedule are inherited
12223
+ * from the ad set on Meta. Mutually exclusive with `creatives[]`.
12224
+ *
12225
+ */
12226
+ adSetId?: string;
12196
12227
  /**
12197
12228
  * Google Display only
12198
12229
  */
@@ -12241,10 +12272,15 @@ type CreateStandaloneAdData = {
12241
12272
  advantageAudience?: 0 | 1;
12242
12273
  };
12243
12274
  };
12244
- type CreateStandaloneAdResponse = ({
12275
+ type CreateStandaloneAdResponse = (({
12245
12276
  ad?: Ad;
12246
12277
  message?: string;
12247
- });
12278
+ } | {
12279
+ ads?: Array<Ad>;
12280
+ platformCampaignId?: string;
12281
+ platformAdSetId?: string;
12282
+ message?: string;
12283
+ }));
12248
12284
  type CreateStandaloneAdError = (unknown | {
12249
12285
  error?: string;
12250
12286
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zernio/node",
3
- "version": "0.2.79",
3
+ "version": "0.2.81",
4
4
  "description": "The official Node.js library for the Zernio API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -2238,6 +2238,8 @@ export const releaseWhatsAppPhoneNumber = <ThrowOnError extends boolean = false>
2238
2238
  * List active WhatsApp group chats for a business phone number.
2239
2239
  * These are actual WhatsApp group conversations on the platform.
2240
2240
  *
2241
+ * Not available on [Coexistence](/platforms/whatsapp#whatsapp-business-app-coexistence) numbers. Requires a Cloud API-only number.
2242
+ *
2241
2243
  */
2242
2244
  export const listWhatsAppGroupChats = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListWhatsAppGroupChatsData, ThrowOnError>) => {
2243
2245
  return (options?.client ?? client).get<ListWhatsAppGroupChatsResponse, ListWhatsAppGroupChatsError, ThrowOnError>({
@@ -2250,6 +2252,8 @@ export const listWhatsAppGroupChats = <ThrowOnError extends boolean = false>(opt
2250
2252
  * Create group
2251
2253
  * Create a new WhatsApp group chat. Returns the group ID and optionally an invite link.
2252
2254
  *
2255
+ * Not available on [Coexistence](/platforms/whatsapp#whatsapp-business-app-coexistence) numbers. Requires a Cloud API-only number.
2256
+ *
2253
2257
  */
2254
2258
  export const createWhatsAppGroupChat = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateWhatsAppGroupChatData, ThrowOnError>) => {
2255
2259
  return (options?.client ?? client).post<CreateWhatsAppGroupChatResponse, CreateWhatsAppGroupChatError, ThrowOnError>({
@@ -2263,6 +2267,8 @@ export const createWhatsAppGroupChat = <ThrowOnError extends boolean = false>(op
2263
2267
  * Retrieve metadata about a WhatsApp group including subject, description,
2264
2268
  * participants, and settings.
2265
2269
  *
2270
+ * Not available on [Coexistence](/platforms/whatsapp#whatsapp-business-app-coexistence) numbers. Requires a Cloud API-only number.
2271
+ *
2266
2272
  */
2267
2273
  export const getWhatsAppGroupChat = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetWhatsAppGroupChatData, ThrowOnError>) => {
2268
2274
  return (options?.client ?? client).get<GetWhatsAppGroupChatResponse, GetWhatsAppGroupChatError, ThrowOnError>({
@@ -2275,6 +2281,8 @@ export const getWhatsAppGroupChat = <ThrowOnError extends boolean = false>(optio
2275
2281
  * Update group settings
2276
2282
  * Update the subject, description, or join approval mode of a WhatsApp group.
2277
2283
  *
2284
+ * Not available on [Coexistence](/platforms/whatsapp#whatsapp-business-app-coexistence) numbers. Requires a Cloud API-only number.
2285
+ *
2278
2286
  */
2279
2287
  export const updateWhatsAppGroupChat = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateWhatsAppGroupChatData, ThrowOnError>) => {
2280
2288
  return (options?.client ?? client).post<UpdateWhatsAppGroupChatResponse, UpdateWhatsAppGroupChatError, ThrowOnError>({
@@ -2287,6 +2295,8 @@ export const updateWhatsAppGroupChat = <ThrowOnError extends boolean = false>(op
2287
2295
  * Delete group
2288
2296
  * Delete a WhatsApp group and remove all participants.
2289
2297
  *
2298
+ * Not available on [Coexistence](/platforms/whatsapp#whatsapp-business-app-coexistence) numbers. Requires a Cloud API-only number.
2299
+ *
2290
2300
  */
2291
2301
  export const deleteWhatsAppGroupChat = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteWhatsAppGroupChatData, ThrowOnError>) => {
2292
2302
  return (options?.client ?? client).delete<DeleteWhatsAppGroupChatResponse, DeleteWhatsAppGroupChatError, ThrowOnError>({
@@ -2299,6 +2309,8 @@ export const deleteWhatsAppGroupChat = <ThrowOnError extends boolean = false>(op
2299
2309
  * Add participants
2300
2310
  * Add participants to a WhatsApp group. Maximum 8 participants per request.
2301
2311
  *
2312
+ * Not available on [Coexistence](/platforms/whatsapp#whatsapp-business-app-coexistence) numbers. Requires a Cloud API-only number.
2313
+ *
2302
2314
  */
2303
2315
  export const addWhatsAppGroupParticipants = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<AddWhatsAppGroupParticipantsData, ThrowOnError>) => {
2304
2316
  return (options?.client ?? client).post<AddWhatsAppGroupParticipantsResponse, AddWhatsAppGroupParticipantsError, ThrowOnError>({
@@ -2311,6 +2323,8 @@ export const addWhatsAppGroupParticipants = <ThrowOnError extends boolean = fals
2311
2323
  * Remove participants
2312
2324
  * Remove participants from a WhatsApp group.
2313
2325
  *
2326
+ * Not available on [Coexistence](/platforms/whatsapp#whatsapp-business-app-coexistence) numbers. Requires a Cloud API-only number.
2327
+ *
2314
2328
  */
2315
2329
  export const removeWhatsAppGroupParticipants = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveWhatsAppGroupParticipantsData, ThrowOnError>) => {
2316
2330
  return (options?.client ?? client).delete<RemoveWhatsAppGroupParticipantsResponse, RemoveWhatsAppGroupParticipantsError, ThrowOnError>({
@@ -2323,6 +2337,8 @@ export const removeWhatsAppGroupParticipants = <ThrowOnError extends boolean = f
2323
2337
  * Create invite link
2324
2338
  * Create a new invite link for a WhatsApp group. The previous link is revoked.
2325
2339
  *
2340
+ * Not available on [Coexistence](/platforms/whatsapp#whatsapp-business-app-coexistence) numbers. Requires a Cloud API-only number.
2341
+ *
2326
2342
  */
2327
2343
  export const createWhatsAppGroupInviteLink = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateWhatsAppGroupInviteLinkData, ThrowOnError>) => {
2328
2344
  return (options?.client ?? client).post<CreateWhatsAppGroupInviteLinkResponse, CreateWhatsAppGroupInviteLinkError, ThrowOnError>({
@@ -2335,6 +2351,8 @@ export const createWhatsAppGroupInviteLink = <ThrowOnError extends boolean = fal
2335
2351
  * List join requests
2336
2352
  * List pending join requests for a WhatsApp group (only for groups with approval_required mode).
2337
2353
  *
2354
+ * Not available on [Coexistence](/platforms/whatsapp#whatsapp-business-app-coexistence) numbers. Requires a Cloud API-only number.
2355
+ *
2338
2356
  */
2339
2357
  export const listWhatsAppGroupJoinRequests = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListWhatsAppGroupJoinRequestsData, ThrowOnError>) => {
2340
2358
  return (options?.client ?? client).get<ListWhatsAppGroupJoinRequestsResponse, ListWhatsAppGroupJoinRequestsError, ThrowOnError>({
@@ -2347,6 +2365,8 @@ export const listWhatsAppGroupJoinRequests = <ThrowOnError extends boolean = fal
2347
2365
  * Approve join requests
2348
2366
  * Approve pending join requests for a WhatsApp group.
2349
2367
  *
2368
+ * Not available on [Coexistence](/platforms/whatsapp#whatsapp-business-app-coexistence) numbers. Requires a Cloud API-only number.
2369
+ *
2350
2370
  */
2351
2371
  export const approveWhatsAppGroupJoinRequests = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ApproveWhatsAppGroupJoinRequestsData, ThrowOnError>) => {
2352
2372
  return (options?.client ?? client).post<ApproveWhatsAppGroupJoinRequestsResponse, ApproveWhatsAppGroupJoinRequestsError, ThrowOnError>({
@@ -2359,6 +2379,8 @@ export const approveWhatsAppGroupJoinRequests = <ThrowOnError extends boolean =
2359
2379
  * Reject join requests
2360
2380
  * Reject pending join requests for a WhatsApp group.
2361
2381
  *
2382
+ * Not available on [Coexistence](/platforms/whatsapp#whatsapp-business-app-coexistence) numbers. Requires a Cloud API-only number.
2383
+ *
2362
2384
  */
2363
2385
  export const rejectWhatsAppGroupJoinRequests = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RejectWhatsAppGroupJoinRequestsData, ThrowOnError>) => {
2364
2386
  return (options?.client ?? client).delete<RejectWhatsAppGroupJoinRequestsResponse, RejectWhatsAppGroupJoinRequestsError, ThrowOnError>({
@@ -3158,7 +3180,14 @@ export const boostPost = <ThrowOnError extends boolean = false>(options: Options
3158
3180
 
3159
3181
  /**
3160
3182
  * Create standalone ad
3161
- * Creates a paid ad with custom creative (headline, body, image/video, link). Creates the full platform campaign hierarchy.
3183
+ * Creates a paid ad with custom creative. The request body supports three mutually-exclusive shapes:
3184
+ *
3185
+ * 1. **Legacy single-creative** (all platforms). Top-level `headline` + `body` + `imageUrl` + `linkUrl` + `callToAction` create 1 campaign + 1 ad set + 1 ad.
3186
+ * 2. **Multi-creative** (Meta only — use `creatives[]` array). Creates 1 campaign + 1 ad set + N ads sharing the same budget / targeting / schedule. This is the standard performance-marketing creative-testing flow — Meta's delivery algorithm A/B tests the creatives inside a single ad set so budget isn't fragmented across N parallel campaigns.
3187
+ * 3. **Attach to existing ad set** (Meta only — pass `adSetId` + a single creative). Adds one new ad to an existing ad set without creating a new campaign. Budget, targeting, goal are inherited from the ad set on Meta.
3188
+ *
3189
+ * `creatives[]` and `adSetId` are mutually exclusive; specifying both returns 400.
3190
+ *
3162
3191
  */
3163
3192
  export const createStandaloneAd = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateStandaloneAdData, ThrowOnError>) => {
3164
3193
  return (options?.client ?? client).post<CreateStandaloneAdResponse, CreateStandaloneAdError, ThrowOnError>({
@@ -12476,14 +12476,20 @@ export type CreateStandaloneAdData = {
12476
12476
  adAccountId: string;
12477
12477
  name: string;
12478
12478
  /**
12479
- * Available goals vary by platform. Meta (Facebook/Instagram) and TikTok support all 7. LinkedIn supports all except app_promotion. Twitter/X supports engagement, traffic, awareness, video_views, app_promotion. Pinterest and Google Ads support only engagement, traffic, awareness, video_views.
12479
+ * Required on legacy + multi-creative shapes. Inherited from the ad set on the attach shape. Available goals vary by platform.
12480
12480
  */
12481
- goal: 'engagement' | 'traffic' | 'awareness' | 'video_views' | 'lead_generation' | 'conversions' | 'app_promotion';
12482
- budgetAmount: number;
12483
- budgetType: 'daily' | 'lifetime';
12481
+ goal?: 'engagement' | 'traffic' | 'awareness' | 'video_views' | 'lead_generation' | 'conversions' | 'app_promotion';
12482
+ /**
12483
+ * Required on legacy + multi-creative shapes. Inherited on attach.
12484
+ */
12485
+ budgetAmount?: number;
12486
+ /**
12487
+ * Required on legacy + multi-creative shapes. Inherited on attach.
12488
+ */
12489
+ budgetType?: 'daily' | 'lifetime';
12484
12490
  currency?: string;
12485
12491
  /**
12486
- * Required for most platforms. Max: Meta=255, Google=30, Pinterest=100
12492
+ * Required on legacy + attach shapes (skip for multi-creative — use `creatives[].headline`). Max: Meta=255, Google=30, Pinterest=100
12487
12493
  */
12488
12494
  headline?: string;
12489
12495
  /**
@@ -12491,18 +12497,43 @@ export type CreateStandaloneAdData = {
12491
12497
  */
12492
12498
  longHeadline?: string;
12493
12499
  /**
12494
- * Max: Google=90, Pinterest=500
12500
+ * Required on legacy + attach shapes. Max: Google=90, Pinterest=500
12495
12501
  */
12496
- body: string;
12502
+ body?: string;
12497
12503
  /**
12498
- * Meta only
12504
+ * Required on legacy + attach shapes. Meta only.
12499
12505
  */
12500
12506
  callToAction?: 'LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE';
12507
+ /**
12508
+ * Required on legacy + attach shapes. Skip for multi-creative.
12509
+ */
12501
12510
  linkUrl?: string;
12502
12511
  /**
12503
- * Image URL (or video URL for TikTok). Not required for Google Search campaigns.
12512
+ * Required on legacy + attach shapes. Not required for Google Search campaigns.
12504
12513
  */
12505
12514
  imageUrl?: string;
12515
+ /**
12516
+ * Meta-only. When present, switches to the multi-creative shape:
12517
+ * creates 1 campaign + 1 ad set + N ads (one per entry here).
12518
+ * Top-level `headline` / `body` / `imageUrl` / `linkUrl` /
12519
+ * `callToAction` are ignored in this mode. Mutually exclusive with `adSetId`.
12520
+ *
12521
+ */
12522
+ creatives?: Array<{
12523
+ headline: string;
12524
+ body: string;
12525
+ imageUrl: string;
12526
+ linkUrl: string;
12527
+ callToAction: 'LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE';
12528
+ }>;
12529
+ /**
12530
+ * Meta-only. When present, switches to the attach shape: adds
12531
+ * one new ad to this existing ad set without creating a new
12532
+ * campaign. Budget, targeting, goal, and schedule are inherited
12533
+ * from the ad set on Meta. Mutually exclusive with `creatives[]`.
12534
+ *
12535
+ */
12536
+ adSetId?: string;
12506
12537
  /**
12507
12538
  * Google Display only
12508
12539
  */
@@ -12552,10 +12583,15 @@ export type CreateStandaloneAdData = {
12552
12583
  };
12553
12584
  };
12554
12585
 
12555
- export type CreateStandaloneAdResponse = ({
12586
+ export type CreateStandaloneAdResponse = (({
12556
12587
  ad?: Ad;
12557
12588
  message?: string;
12558
- });
12589
+ } | {
12590
+ ads?: Array<Ad>;
12591
+ platformCampaignId?: string;
12592
+ platformAdSetId?: string;
12593
+ message?: string;
12594
+ }));
12559
12595
 
12560
12596
  export type CreateStandaloneAdError = (unknown | {
12561
12597
  error?: string;