@zernio/node 0.2.736 → 0.2.738

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.
@@ -255,6 +255,14 @@ export type Ad = {
255
255
  * Platform-specific creative data. Fields vary by platform.
256
256
  */
257
257
  creative?: {
258
+ /**
259
+ * Initial Performance Max asset group input. Use the asset-groups endpoint for current Google assets.
260
+ */
261
+ assetGroup?: GooglePmaxAssetGroupInput;
262
+ /**
263
+ * Google resource name of the created Performance Max asset group.
264
+ */
265
+ assetGroupResourceName?: string;
258
266
  /**
259
267
  * Google RSA only. Replaces the complete headline list. No padding or truncation on update.
260
268
  */
@@ -4473,6 +4481,70 @@ export type GoogleBusinessReview = {
4473
4481
  */
4474
4482
  export type starRating = 'ONE' | 'TWO' | 'THREE' | 'FOUR' | 'FIVE';
4475
4483
 
4484
+ export type GooglePmaxAssetGroup = {
4485
+ id: string;
4486
+ resourceName: string;
4487
+ name: string;
4488
+ /**
4489
+ * Asset-group status on Google. Campaign status independently controls delivery.
4490
+ */
4491
+ status: string;
4492
+ finalUrls: Array<(string)>;
4493
+ assets: Array<{
4494
+ resourceName: string;
4495
+ /**
4496
+ * Google asset role, such as HEADLINE or LOGO.
4497
+ */
4498
+ fieldType: string;
4499
+ status: string;
4500
+ text?: string;
4501
+ imageUrl?: string;
4502
+ youtubeVideoId?: string;
4503
+ }>;
4504
+ };
4505
+
4506
+ /**
4507
+ * Google Performance Max creative assets. At least one description must be 60 characters or fewer. Texts within each list must be distinct.
4508
+ */
4509
+ export type GooglePmaxAssetGroupInput = {
4510
+ /**
4511
+ * Defaults to the request name.
4512
+ */
4513
+ name?: string;
4514
+ /**
4515
+ * Required destination URL.
4516
+ */
4517
+ finalUrl: string;
4518
+ headlines: Array<(string)>;
4519
+ longHeadline: string;
4520
+ /**
4521
+ * At least one description must be 60 characters or fewer.
4522
+ */
4523
+ descriptions: Array<(string)>;
4524
+ businessName: string;
4525
+ /**
4526
+ * Public HTTP(S) image URLs. GIF, JPEG or PNG, at most 5120 KB per image. Google validates dimensions and aspect ratios.
4527
+ */
4528
+ images: {
4529
+ /**
4530
+ * Landscape marketing images. Aspect ratio 1.91:1, minimum 600 x 314 pixels.
4531
+ */
4532
+ landscape: Array<(string)>;
4533
+ /**
4534
+ * Square marketing images. Aspect ratio 1:1, minimum 300 x 300 pixels.
4535
+ */
4536
+ square: Array<(string)>;
4537
+ /**
4538
+ * Required square logos. Aspect ratio 1:1, minimum 128 x 128 pixels.
4539
+ */
4540
+ logo: Array<(string)>;
4541
+ };
4542
+ /**
4543
+ * Optional existing YouTube video id. Google can generate video when omitted. Video uploads and arbitrary video URLs are not supported.
4544
+ */
4545
+ youtubeVideoId?: string;
4546
+ };
4547
+
4476
4548
  export type GoogleRsaDescription = {
4477
4549
  text: string;
4478
4550
  /**
@@ -36296,6 +36368,106 @@ export type GetAdAccountFinanceError = (unknown | {
36296
36368
  error?: string;
36297
36369
  });
36298
36370
 
36371
+ export type CreateAdAccountData = {
36372
+ body: {
36373
+ /**
36374
+ * Zernio metaads SocialAccount ID.
36375
+ */
36376
+ accountId: string;
36377
+ /**
36378
+ * Business portfolio that will own the account.
36379
+ */
36380
+ businessId: string;
36381
+ /**
36382
+ * Ad account name. Whitespace is trimmed.
36383
+ */
36384
+ name: string;
36385
+ /**
36386
+ * Uppercase ISO 4217 currency supported by Meta.
36387
+ */
36388
+ currency: string;
36389
+ /**
36390
+ * Numeric Meta timezone ID from the linked timezone list. For example 1 is America/Los_Angeles.
36391
+ */
36392
+ timezoneId: number;
36393
+ /**
36394
+ * End advertiser business or page ID. NONE uses the owning business.
36395
+ */
36396
+ endAdvertiser?: string;
36397
+ /**
36398
+ * Media agency business or page ID. NONE for self-serve customers.
36399
+ */
36400
+ mediaAgency?: string;
36401
+ /**
36402
+ * Partner business or page ID. NONE for self-serve customers.
36403
+ */
36404
+ partner?: string;
36405
+ /**
36406
+ * Request Meta invoicing. Eligibility is determined by Meta.
36407
+ */
36408
+ invoice?: boolean;
36409
+ /**
36410
+ * Existing Meta invoice group ID.
36411
+ */
36412
+ invoiceGroupId?: string;
36413
+ /**
36414
+ * Addresses for Meta invoices.
36415
+ */
36416
+ invoicingEmails?: Array<(string)>;
36417
+ /**
36418
+ * Meta insertion-order invoicing option.
36419
+ */
36420
+ io?: boolean;
36421
+ /**
36422
+ * Purchase order number.
36423
+ */
36424
+ poNumber?: string;
36425
+ /**
36426
+ * Existing Meta funding reference. Does not add a payment method.
36427
+ */
36428
+ fundingId?: string;
36429
+ /**
36430
+ * Meta Business Manager creation flag.
36431
+ */
36432
+ adAccountCreatedFromBmFlag?: boolean;
36433
+ };
36434
+ };
36435
+
36436
+ export type CreateAdAccountResponse = ({
36437
+ /**
36438
+ * New Meta ad account ID for subsequent ads calls.
36439
+ */
36440
+ adAccountId: string;
36441
+ /**
36442
+ * Owning business portfolio ID.
36443
+ */
36444
+ businessId: string;
36445
+ /**
36446
+ * Whether the connection scope and discovery schedule were updated.
36447
+ */
36448
+ connectionUpdated: boolean;
36449
+ /**
36450
+ * Always true as a delivery prerequisite. This is not a live funding-source check. Confirm payment or invoicing in Ads Manager.
36451
+ */
36452
+ paymentMethodRequired: boolean;
36453
+ /**
36454
+ * Open the created account in Ads Manager.
36455
+ */
36456
+ adsManagerUrl: string;
36457
+ /**
36458
+ * Payment setup instructions for the user.
36459
+ */
36460
+ nextSteps: string;
36461
+ /**
36462
+ * Recovery instructions if the account could not be attached to the connection.
36463
+ */
36464
+ warnings: Array<(string)>;
36465
+ });
36466
+
36467
+ export type CreateAdAccountError = (ErrorResponse | {
36468
+ error?: string;
36469
+ });
36470
+
36299
36471
  export type ListAdAccountsData = {
36300
36472
  query: {
36301
36473
  /**
@@ -36812,6 +36984,25 @@ export type BoostPostError = (unknown | {
36812
36984
  error?: string;
36813
36985
  });
36814
36986
 
36987
+ export type ListGoogleAssetGroupsData = {
36988
+ path: {
36989
+ /**
36990
+ * Google Ads campaign id.
36991
+ */
36992
+ campaignId: string;
36993
+ };
36994
+ };
36995
+
36996
+ export type ListGoogleAssetGroupsResponse = ({
36997
+ assetGroups: Array<GooglePmaxAssetGroup>;
36998
+ cachedAt: (string) | null;
36999
+ stale: boolean;
37000
+ });
37001
+
37002
+ export type ListGoogleAssetGroupsError = (ErrorResponse | {
37003
+ error?: string;
37004
+ } | unknown);
37005
+
36815
37006
  export type CreateStandaloneAdData = {
36816
37007
  body: {
36817
37008
  accountId: string;
@@ -36881,19 +37072,19 @@ export type CreateStandaloneAdData = {
36881
37072
  */
36882
37073
  multiAdvertiser?: 'OPT_IN' | 'OPT_OUT';
36883
37074
  /**
36884
- * Meta only. Validates the complete inline campaign, ad set, creative and ad with execution_options validate_only. Nothing is uploaded or created, and validation bypasses Idempotency-Key storage. Supports a single image, existing video.id or existingCreativeId; media pools, new video uploads, creatives[], adSetId and RESERVED buying return 400. Existing campaign or creative nodes are marked skipped. Success returns 200 with per-node results; Meta rejection returns an error.
37075
+ * Google Performance Max validates the complete atomic campaign and asset group with no resource creation or local persistence. Google validation still downloads image URLs and consumes quota. On Meta, validates the complete inline campaign, ad set, creative and ad with execution_options validate_only. Nothing is uploaded or created, and validation bypasses Idempotency-Key storage. Supports a single image, existing video.id or existingCreativeId; media pools, new video uploads, creatives[], adSetId and RESERVED buying return 400. Existing campaign or creative nodes are marked skipped. Success returns 200 with per-node results; Meta rejection returns an error.
36885
37076
  */
36886
37077
  validateOnly?: boolean;
36887
37078
  /**
36888
- * Budget in WHOLE currency units (USD: 50 = $50.00), NOT cents. Meta's own Marketing API takes this same number in minor units, so it is an easy and expensive mix-up. Required on legacy + multi-creative shapes. Inherited on attach. OpenAI Ads requires a $1 minimum (its budget is lifetime-only, see budgetType).
37079
+ * Budget in WHOLE currency units (USD: 50 = $50.00), NOT cents. Meta's own Marketing API takes this same number in minor units, so it is an easy and expensive mix-up. Required on legacy, multi-creative and Performance Max shapes. Inherited on attach. OpenAI Ads requires a $1 minimum (its budget is lifetime-only, see budgetType).
36889
37080
  */
36890
37081
  budgetAmount?: number;
36891
37082
  /**
36892
- * Required on legacy + multi-creative shapes. Inherited on attach. OpenAI Ads accepts lifetime only (no daily-budget concept on the platform); sending daily returns 422. OpenAI Ads lifetime budgets require `endDate` to give the lifetime cap a spend window.
37083
+ * Required on legacy, multi-creative and Performance Max shapes. Inherited on attach. OpenAI Ads accepts lifetime only (no daily-budget concept on the platform); sending daily returns 422. OpenAI Ads lifetime budgets require `endDate` to give the lifetime cap a spend window.
36893
37084
  */
36894
37085
  budgetType?: 'daily' | 'lifetime';
36895
37086
  /**
36896
- * Meta, TikTok, and LinkedIn. Publish state of the created entities. Omitted or ACTIVE publishes live (default, back-compat); PAUSED creates them paused so you can review before they spend. On Meta the pause is held on the campaign this call creates, leaving the ad set and ad switched on, so a single PUT /v1/ads/campaigns/{campaignId}/status with `active` brings the whole thing live. It is held at every level instead when the pause cannot rely on the campaign: `existingCampaignId` (that campaign may be running and is never touched) or `campaignStatus: ACTIVE`. On TikTok the whole campaign > ad group > ad hierarchy stays paused. On LinkedIn the whole campaign group, campaign, and creative hierarchy stays PAUSED (intendedStatus PAUSED on each).
37087
+ * Google Performance Max accepts PAUSED only and always creates a paused campaign. Meta, TikTok, and LinkedIn: publish state of the created entities. Omitted or ACTIVE publishes live (default, back-compat); PAUSED creates them paused so you can review before they spend. On Meta the pause is held on the campaign this call creates, leaving the ad set and ad switched on, so a single PUT /v1/ads/campaigns/{campaignId}/status with `active` brings the whole thing live. It is held at every level instead when the pause cannot rely on the campaign: `existingCampaignId` (that campaign may be running and is never touched) or `campaignStatus: ACTIVE`. On TikTok the whole campaign > ad group > ad hierarchy stays paused. On LinkedIn the whole campaign group, campaign, and creative hierarchy stays PAUSED (intendedStatus PAUSED on each).
36897
37088
  */
36898
37089
  status?: 'ACTIVE' | 'PAUSED';
36899
37090
  /**
@@ -37589,9 +37780,10 @@ export type CreateStandaloneAdData = {
37589
37780
  */
37590
37781
  audienceId?: string;
37591
37782
  /**
37592
- * Google only
37783
+ * Google only. Performance Max requires assetGroup and is always created PAUSED.
37593
37784
  */
37594
- campaignType?: 'display' | 'search';
37785
+ campaignType?: 'display' | 'search' | 'pmax';
37786
+ assetGroup?: GooglePmaxAssetGroupInput;
37595
37787
  /**
37596
37788
  * Google Search only. Keywords on the new ad group; entries are strings (BROAD) or { text, matchType }. Editable later via PUT /v1/ads/{adId} targeting.keywords.
37597
37789
  */
@@ -37729,7 +37921,7 @@ export type CreateStandaloneAdData = {
37729
37921
  */
37730
37922
  roasAverageFloor?: number;
37731
37923
  /**
37732
- * Google only. Attach an existing portfolio bid strategy (numeric id from GET /v1/ads/bid-strategies) to the new campaign instead of a standard one. Exclusive with bidStrategy.
37924
+ * Google Search and Display only. Performance Max rejects portfolio bidding. Attach an existing portfolio bid strategy (numeric id from GET /v1/ads/bid-strategies) to the new campaign instead of a standard one. Exclusive with bidStrategy.
37733
37925
  */
37734
37926
  portfolioBidStrategyId?: string;
37735
37927
  /**
@@ -37881,7 +38073,7 @@ export type CreateStandaloneAdResponse = ({
37881
38073
  */
37882
38074
  validateOnly?: boolean;
37883
38075
  results?: Array<{
37884
- node?: 'campaign' | 'adSet' | 'creative' | 'ad';
38076
+ node?: 'campaign' | 'adSet' | 'creative' | 'ad' | 'performanceMaxCampaign';
37885
38077
  status?: 'validated' | 'skipped';
37886
38078
  /**
37887
38079
  * Why the node could not be validated (only on skipped).