@zernio/node 0.2.730 → 0.2.731

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.js CHANGED
@@ -36,7 +36,7 @@ module.exports = __toCommonJS(index_exports);
36
36
  // package.json
37
37
  var package_default = {
38
38
  name: "@zernio/node",
39
- version: "0.2.730",
39
+ version: "0.2.731",
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: "@zernio/node",
8
- version: "0.2.730",
8
+ version: "0.2.731",
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": "@zernio/node",
3
- "version": "0.2.730",
3
+ "version": "0.2.731",
4
4
  "description": "The official Node.js library for the Zernio API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -8367,7 +8367,9 @@ export const duplicateAdSet = <ThrowOnError extends boolean = false>(options: Op
8367
8367
  * Duplicates a single ad via Meta's native `POST /{ad-id}/copies`. The copy is created
8368
8368
  * paused. `adSetId` retargets the copy into another ad set; omitted = the source's own ad
8369
8369
  * set. Accepts the Zernio ad id or the platform ad id. Sync discovery is triggered
8370
- * automatically (`syncAfter: false` to skip).
8370
+ * automatically (`syncAfter: false` to skip). Creative settings returned by Meta,
8371
+ * including explicit promotion metadata and creativeFeatures, are preserved when the
8372
+ * native copy requires a creative rebuild. Metadata Meta does not return cannot be recovered.
8371
8373
  */
8372
8374
  export const duplicateAd = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DuplicateAdData, ThrowOnError>) => {
8373
8375
  return (options?.client ?? client).post<DuplicateAdResponse, DuplicateAdError, ThrowOnError>({
@@ -8555,6 +8557,11 @@ export const getAdsTimeline = <ThrowOnError extends boolean = false>(options: Op
8555
8557
  * - the creative's `effective_instagram_media_id` (Instagram side)
8556
8558
  *
8557
8559
  * Any of the four resolve to the same ad. Caller doesn't need a translation step.
8560
+ * By default, creative.promotion and creative.creativeFeatures contain stored requested
8561
+ * settings, which do not confirm platform application. With `refreshPromotion=true`,
8562
+ * Meta promotion metadata is read live and exposed as `ad.creative.promotion`
8563
+ * with `promotionStatus`. Only `applied` confirms an offer; `not_returned` means the
8564
+ * creative read succeeded without promotion metadata, and `unavailable` means it failed.
8558
8565
  *
8559
8566
  */
8560
8567
  export const getAd = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetAdData, ThrowOnError>) => {
@@ -9102,7 +9109,11 @@ export const listAdCreatives = <ThrowOnError extends boolean = false>(options: O
9102
9109
  * `existingCreativeId`. Provide exactly one of `imageUrl` (uploaded server-side),
9103
9110
  * `imageHash` (from POST /v1/ads/images or the library list), or `carouselCards` (2-10
9104
9111
  * hand-built cards). The Page (and linked Instagram account, when present) is resolved
9105
- * from `accountId` as the story actor.
9112
+ * from `accountId` as the story actor. `promotion` configures an explicit offer separately
9113
+ * from Advantage+ `creativeFeatures`. Only when `promotion` is supplied does the response
9114
+ * read the creative back from Meta;
9115
+ * `promotionStatus: not_returned` means Meta accepted creation but omitted promotion
9116
+ * metadata, so the requested offer is not confirmed as applied.
9106
9117
  */
9107
9118
  export const createAdCreative = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateAdCreativeData, ThrowOnError>) => {
9108
9119
  return (options?.client ?? client).post<CreateAdCreativeResponse, CreateAdCreativeError, ThrowOnError>({
@@ -9555,6 +9566,16 @@ export const boostPost = <ThrowOnError extends boolean = false>(options: Options
9555
9566
  * - Meta-only multi-creative shape via the creatives array: one ad set with N ads sharing budget and targeting.
9556
9567
  * - Attach shape via adSetId: adds one new ad to an existing ad set, inheriting its budget, targeting, and schedule (Meta, Google Ads, TikTok, and LinkedIn). On LinkedIn adSetId is the existing Campaign id, and the budget, schedule, targeting and bidding fields must be omitted.
9557
9568
  *
9569
+ * Meta accepts `promotion` and `creativeFeatures` on the single and attach shapes and
9570
+ * as defaults for `creatives[]`. An item replaces the whole feature map; its `promotion`
9571
+ * replaces the default offer, and `promotion: null` disables that default for the item.
9572
+ * Reusing `existingCreativeId` uses the existing creative settings instead of new settings.
9573
+ * Requested settings are persisted for lists, exports, and default ad-detail reads.
9574
+ * Only ads supplied a `promotion` receive live readback; multi-create batches those reads
9575
+ * in groups of up to 50 IDs without per-ad fallback. Inspect `ad.creative.promotionStatus` (or
9576
+ * `ads[].creative.promotionStatus`). `not_returned` means Meta omitted the metadata;
9577
+ * successful creation does not by itself prove the offer was applied or will display.
9578
+ *
9558
9579
  * Per-platform required fields, budget minimums, and video-ad rules are documented on each property below.
9559
9580
  *
9560
9581
  * LinkedIn creates a Single Image or Single Video Ad backed by a Direct Sponsored Content "dark post" authored by a Company Page (see `organizationId`). Supported goals are engagement, traffic, awareness, and video_views (video ads use the `video` field; video_views requires a video), and traffic ads require `linkUrl`.
@@ -9942,7 +9963,7 @@ export const listAdCatalogs = <ThrowOnError extends boolean = false>(options: Op
9942
9963
 
9943
9964
  /**
9944
9965
  * List a catalog's product sets
9945
- * Lists a Meta product catalog's product sets, the unit a catalog ad promotes. Pass the chosen set as `promotedObject.productSetId` on POST /v1/ads/create with `goal: catalog_sales`.
9966
+ * Lists a Meta product catalog's product sets, the unit a catalog ad promotes. Pass the chosen set id, not the parent catalog id, as `promotedObject.productSetId` on POST /v1/ads/create with `goal: catalog_sales`. Creation verifies set visibility and returns 400 for a catalog id or an inaccessible set.
9946
9967
  */
9947
9968
  export const listAdCatalogProductSets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdCatalogProductSetsData, ThrowOnError>) => {
9948
9969
  return (options?.client ?? client).get<ListAdCatalogProductSetsResponse, ListAdCatalogProductSetsError, ThrowOnError>({
@@ -271,6 +271,11 @@ export type Ad = {
271
271
  * Public Facebook watch URL for VIDEO-type ads (https://www.facebook.com/watch/?v={videoId}). Null for non-video ads.
272
272
  */
273
273
  videoUrl?: (string) | null;
274
+ /**
275
+ * Meta offer read from the live creative on creation or GET /v1/ads/{adId}. Null when metadata is not returned or cannot be read. Requested values are never echoed as applied.
276
+ */
277
+ promotion?: MetaPromotion;
278
+ promotionStatus?: MetaPromotionStatus;
274
279
  /**
275
280
  * Meta ad creative id backing this ad. Reusable via existingCreativeId on POST /v1/ads/create.
276
281
  */
@@ -2814,6 +2819,10 @@ export type actionSource = 'web' | 'app' | 'offline' | 'crm' | 'phone_call' | 's
2814
2819
  *
2815
2820
  */
2816
2821
  export type CtwaAdRequestBody = {
2822
+ /**
2823
+ * Meta enhancement settings for single or attached ads, and defaults for creatives[]. An item replaces the entire map, including with an empty object.
2824
+ */
2825
+ creativeFeatures?: MetaCreativeFeatures;
2817
2826
  /**
2818
2827
  * Facebook or Instagram SocialAccount ID.
2819
2828
  */
@@ -2922,6 +2931,10 @@ export type CtwaAdRequestBody = {
2922
2931
  * Messaging and CTWA only. Raw Facebook pageId_postId reference, used as object_story_id even with an Instagram account. Mutually exclusive with existingPostId and fresh creative fields.
2923
2932
  */
2924
2933
  objectStoryId?: string;
2934
+ /**
2935
+ * Replaces the top-level creativeFeatures map for this item. Omit to inherit; an empty object clears inherited enrollment choices.
2936
+ */
2937
+ creativeFeatures?: MetaCreativeFeatures;
2925
2938
  headline?: string;
2926
2939
  /**
2927
2940
  * Primary text shown above the image / video.
@@ -5390,6 +5403,49 @@ export type MetaAdsPlatformData = {
5390
5403
  lifetimeMinSpendTarget?: number;
5391
5404
  };
5392
5405
 
5406
+ /**
5407
+ * Meta Advantage+ creative enhancements. Map snake_case feature names to OPT_IN or OPT_OUT; Meta validates supported keys and unspecified features default to OPT_OUT. auto_promotion_tag is an enhancement; use the separate promotion field for an explicit offer. The deprecated standard_enhancements bundle is rejected by Meta.
5408
+ */
5409
+ export type MetaCreativeFeatures = {
5410
+ [key: string]: ('OPT_IN' | 'OPT_OUT');
5411
+ };
5412
+
5413
+ /**
5414
+ * Meta explicit Promotion offer. Maps to creative_sourcing_spec.promotion_metadata_spec with promotion_source ADVERTISER_INPUT. Dates become Unix seconds. Send null to omit an explicit offer on a new creative or remove it when rebuilding. Creation success alone does not confirm application: inspect promotionStatus in the response.
5415
+ */
5416
+ export type MetaPromotion = {
5417
+ /**
5418
+ * Promotion type accepted by Meta. PERCENTAGE_OFF values cannot exceed 100.
5419
+ */
5420
+ type: 'AMOUNT_OFF' | 'FREE_RETURN' | 'FREE_SHIPPING' | 'PERCENTAGE_OFF' | 'PROMO_CODE';
5421
+ /**
5422
+ * Nonnegative promotion value passed to Meta unchanged. AMOUNT_OFF units are not confirmed, including major versus minor currency units. For PERCENTAGE_OFF this is the percentage discount, at most 100.
5423
+ */
5424
+ value: number;
5425
+ /**
5426
+ * Optional promotion code.
5427
+ */
5428
+ code?: string;
5429
+ /**
5430
+ * Optional ISO 8601 start timestamp with a timezone offset or Z.
5431
+ */
5432
+ startDate?: string;
5433
+ /**
5434
+ * Optional ISO 8601 end timestamp with a timezone offset or Z. Must be after startDate when both are set.
5435
+ */
5436
+ endDate?: string;
5437
+ } | null;
5438
+
5439
+ /**
5440
+ * Promotion type accepted by Meta. PERCENTAGE_OFF values cannot exceed 100.
5441
+ */
5442
+ export type type8 = 'AMOUNT_OFF' | 'FREE_RETURN' | 'FREE_SHIPPING' | 'PERCENTAGE_OFF' | 'PROMO_CODE';
5443
+
5444
+ /**
5445
+ * Meta creative readback result. applied means Meta returned promotion metadata; not_returned means the read succeeded without promotion metadata; unavailable means the read failed. Only applied confirms the returned offer. Missing metadata is not proof that Ads Manager displays the requested Promotion.
5446
+ */
5447
+ export type MetaPromotionStatus = 'applied' | 'not_returned' | 'unavailable';
5448
+
5393
5449
  export type Money = {
5394
5450
  /**
5395
5451
  * ISO 4217 currency code (e.g. USD, EUR)
@@ -5641,7 +5697,7 @@ export type PortfolioBidStrategy = {
5641
5697
  targetRoas?: (number) | null;
5642
5698
  };
5643
5699
 
5644
- export type type8 = 'TARGET_CPA' | 'TARGET_ROAS' | 'MAXIMIZE_CONVERSIONS' | 'MAXIMIZE_CONVERSION_VALUE';
5700
+ export type type9 = 'TARGET_CPA' | 'TARGET_ROAS' | 'MAXIMIZE_CONVERSIONS' | 'MAXIMIZE_CONVERSION_VALUE';
5645
5701
 
5646
5702
  export type Post = {
5647
5703
  _id?: string;
@@ -6937,7 +6993,7 @@ export type UploadedFile = {
6937
6993
  mimeType?: string;
6938
6994
  };
6939
6995
 
6940
- export type type9 = 'image' | 'video' | 'document';
6996
+ export type type10 = 'image' | 'video' | 'document';
6941
6997
 
6942
6998
  export type UploadTokenResponse = {
6943
6999
  token?: string;
@@ -10036,7 +10092,7 @@ export type WhatsAppTemplateButton = {
10036
10092
  navigate_screen?: string;
10037
10093
  };
10038
10094
 
10039
- export type type10 = 'quick_reply' | 'url' | 'phone_number' | 'otp' | 'copy_code' | 'flow' | 'mpm' | 'catalog';
10095
+ export type type11 = 'quick_reply' | 'url' | 'phone_number' | 'otp' | 'copy_code' | 'flow' | 'mpm' | 'catalog';
10040
10096
 
10041
10097
  /**
10042
10098
  * Required when type is otp
@@ -10198,7 +10254,7 @@ export type WorkflowNode = {
10198
10254
  * integrations (webhook, ai, handoff, start_call).
10199
10255
  *
10200
10256
  */
10201
- export type type11 = 'trigger' | 'send_message' | 'wait_for_reply' | 'condition' | 'set_variable' | 'delay' | 'webhook' | 'ai' | 'handoff' | 'start_call' | 'a_b_split' | 'set_field' | 'enroll_sequence' | 'add_tag' | 'remove_tag' | 'end';
10257
+ export type type12 = 'trigger' | 'send_message' | 'wait_for_reply' | 'condition' | 'set_variable' | 'delay' | 'webhook' | 'ai' | 'handoff' | 'start_call' | 'a_b_split' | 'set_field' | 'enroll_sequence' | 'add_tag' | 'remove_tag' | 'end';
10202
10258
 
10203
10259
  /**
10204
10260
  * A single X API operation with its per-call price and the Zernio platform methods that trigger it.
@@ -10334,7 +10390,7 @@ export type XArticleBlock = {
10334
10390
  entity_ranges?: Array<XArticleEntityRange>;
10335
10391
  };
10336
10392
 
10337
- export type type12 = 'unstyled' | 'header-one' | 'header-two' | 'header-three' | 'unordered-list-item' | 'ordered-list-item' | 'blockquote' | 'atomic';
10393
+ export type type13 = 'unstyled' | 'header-one' | 'header-two' | 'header-three' | 'unordered-list-item' | 'ordered-list-item' | 'blockquote' | 'atomic';
10338
10394
 
10339
10395
  /**
10340
10396
  * X's snake_case content-state shape. Standard DraftJS camelCase fields such as entityMap, inlineStyleRanges, and entityRanges are rejected.
@@ -10413,7 +10469,7 @@ export type XArticleEntity = {
10413
10469
 
10414
10470
  export type mutability = 'immutable' | 'mutable' | 'segmented';
10415
10471
 
10416
- export type type13 = 'divider' | 'latex';
10472
+ export type type14 = 'divider' | 'latex';
10417
10473
 
10418
10474
  /**
10419
10475
  * The referenced entity must exist, and offset plus length must not exceed the containing block's text length.
@@ -33022,13 +33078,19 @@ export type GetAdData = {
33022
33078
  */
33023
33079
  adId: string;
33024
33080
  };
33081
+ query?: {
33082
+ /**
33083
+ * Meta only. Read current promotion metadata from Meta and include promotionStatus. Omit for stored creative settings with no promotion-specific Graph call.
33084
+ */
33085
+ refreshPromotion?: boolean;
33086
+ };
33025
33087
  };
33026
33088
 
33027
33089
  export type GetAdResponse = ({
33028
33090
  ad?: Ad;
33029
33091
  });
33030
33092
 
33031
- export type GetAdError = ({
33093
+ export type GetAdError = (ErrorResponse | {
33032
33094
  error?: string;
33033
33095
  });
33034
33096
 
@@ -33119,6 +33181,10 @@ export type UpdateAdData = {
33119
33181
  * GET /v1/ads/creatives and ignores every other field. Meta creatives are
33120
33182
  * immutable, so any change creates a new creative and repoints the ad; the old
33121
33183
  * creative is retained on the ad account for historical reporting.
33184
+ * `promotion` and `creativeFeatures` are Meta-only. Omitted settings are
33185
+ * preserved from the live creative, including full rebuilds. Send
33186
+ * `promotion: null` to remove the explicit offer from the replacement.
33187
+ * A supplied creativeFeatures map overrides individual existing keys.
33122
33188
  * - **TikTok**: patch-style. Pass any subset; `headline` is ignored (TikTok creatives
33123
33189
  * have no headline slot). `body` becomes the in-feed `ad_text`; `linkUrl` becomes
33124
33190
  * `landing_page_url`; `videoUrl` triggers a fresh upload. `description`, `videoId`
@@ -33131,6 +33197,8 @@ export type UpdateAdData = {
33131
33197
  *
33132
33198
  */
33133
33199
  creative?: {
33200
+ promotion?: MetaPromotion;
33201
+ creativeFeatures?: MetaCreativeFeatures;
33134
33202
  /**
33135
33203
  * Meta and LinkedIn (TikTok has no headline slot)
33136
33204
  */
@@ -34429,12 +34497,11 @@ export type CreateAdCreativeData = {
34429
34497
  * Appended to every outbound URL (e.g. utm_source=fb).
34430
34498
  */
34431
34499
  urlTags?: string;
34500
+ promotion?: MetaPromotion;
34432
34501
  /**
34433
- * Advantage+ creative enhancements: partial map of Meta creative feature keys (snake_case) to enroll status, forwarded as degrees_of_freedom_spec.creative_features_spec. Unspecified features default to OPT_OUT.
34502
+ * Meta only. Applied to each new creative, including standalone and attach shapes. With creatives[], these are defaults; an item replaces the whole feature map, including an empty map. auto_promotion_tag is an enhancement; an explicit offer uses promotion.
34434
34503
  */
34435
- creativeFeatures?: {
34436
- [key: string]: ('OPT_IN' | 'OPT_OUT');
34437
- };
34504
+ creativeFeatures?: MetaCreativeFeatures;
34438
34505
  /**
34439
34506
  * Meta only. Multi-advertiser ads: whether Meta may show this ad alongside other advertisers' in one unit. Meta auto-enrols since Aug 2024, so send OPT_OUT to leave. It is a top-level creative field, NOT a `creativeFeatures` key, and Meta rejects it there.
34440
34507
  */
@@ -34448,6 +34515,8 @@ export type CreateAdCreativeResponse = ({
34448
34515
  * Platform creative id, reusable via existingCreativeId.
34449
34516
  */
34450
34517
  creativeId?: string;
34518
+ promotion?: MetaPromotion;
34519
+ promotionStatus?: MetaPromotionStatus;
34451
34520
  });
34452
34521
 
34453
34522
  export type CreateAdCreativeError = (unknown | {
@@ -35273,6 +35342,7 @@ export type GetDsaRecommendationsError = (unknown | {
35273
35342
 
35274
35343
  export type BoostPostData = {
35275
35344
  body: {
35345
+ creativeFeatures?: MetaCreativeFeatures;
35276
35346
  /**
35277
35347
  * Zernio post ID (provide this or platformPostId)
35278
35348
  */
@@ -35683,12 +35753,11 @@ export type CreateStandaloneAdData = {
35683
35753
  * Meta only. The RESERVED prediction id the R&F ad set runs on (reserving mints a new id, so pass that one). Requires buyingType RESERVED.
35684
35754
  */
35685
35755
  rfPredictionId?: string;
35756
+ promotion?: MetaPromotion;
35686
35757
  /**
35687
- * Meta only. Advantage+ creative enhancements: a partial map of Meta creative feature keys (snake_case, e.g. enhance_cta, image_brightness_and_contrast, text_optimizations) to enroll status, forwarded as degrees_of_freedom_spec.creative_features_spec. Meta validates the keys; unspecified features default to OPT_OUT. The legacy standard_enhancements bundle is deprecated by Meta and rejected.
35758
+ * Meta only. Applied to each new creative, including standalone and attach shapes. With creatives[], these are defaults; an item replaces the whole feature map, including an empty map. auto_promotion_tag is an enhancement; an explicit offer uses promotion.
35688
35759
  */
35689
- creativeFeatures?: {
35690
- [key: string]: ('OPT_IN' | 'OPT_OUT');
35691
- };
35760
+ creativeFeatures?: MetaCreativeFeatures;
35692
35761
  /**
35693
35762
  * Meta only. Multi-advertiser ads: whether Meta may show this ad alongside other advertisers' in one unit. Meta auto-enrols since Aug 2024, so send OPT_OUT to leave. It is a top-level creative field, NOT a `creativeFeatures` key, and Meta rejects it there.
35694
35763
  */
@@ -35823,6 +35892,14 @@ export type CreateStandaloneAdData = {
35823
35892
  *
35824
35893
  */
35825
35894
  creatives?: Array<{
35895
+ /**
35896
+ * Overrides the top-level offer for this item. Omit to inherit; null disables the inherited offer.
35897
+ */
35898
+ promotion?: MetaPromotion;
35899
+ /**
35900
+ * Replaces the entire top-level creativeFeatures map for this item. Omit to inherit; an empty map clears these defaults.
35901
+ */
35902
+ creativeFeatures?: MetaCreativeFeatures;
35826
35903
  /**
35827
35904
  * Exact name for this ad. Falls back to `<name> #N` (N = 1-based position).
35828
35905
  */
@@ -35854,7 +35931,8 @@ export type CreateStandaloneAdData = {
35854
35931
  * are inherited from the ad set on Meta, and passing `bidStrategy`
35855
35932
  * in attach mode returns 400. To change an existing ad set's
35856
35933
  * bid, use `PUT /v1/ads/ad-sets/{adSetId}`. Mutually exclusive
35857
- * with `creatives[]`.
35934
+ * with `creatives[]`. `dynamicCreative` returns 400 in attach mode: create
35935
+ * a new dynamic ad set by omitting `adSetId` instead.
35858
35936
  *
35859
35937
  * The attached ad takes the full single-creative surface:
35860
35938
  * `headline`/`body`/`description`/`callToAction` plus either
@@ -36169,7 +36247,10 @@ export type CreateStandaloneAdData = {
36169
36247
  * (`imageUrl`, `headline`, `body`, `linkUrl`, `callToAction`) are ignored. Mutually
36170
36248
  * exclusive with the `creatives[]` multi-creative shape. Exactly ONE of `imageUrls` /
36171
36249
  * `videoUrls` is required (Meta allows one ad format per asset feed; sending both →
36172
- * 400). Meta limits: ≤10 images or ≤10 videos, ≤5 bodies / titles / descriptions.
36250
+ * 400). Limits remain 10 images or videos and 5 bodies, titles or descriptions.
36251
+ * The ad set is created with `is_dynamic_creative: true`. Combining this field
36252
+ * with `adSetId` returns 400: omit `adSetId` to create a new dynamic ad set.
36253
+ * Multiple headlines go in `titles`; multiple primary texts go in `bodies`.
36173
36254
  *
36174
36255
  */
36175
36256
  dynamicCreative?: {
@@ -36747,11 +36828,11 @@ export type CreateStandaloneAdData = {
36747
36828
  */
36748
36829
  customConversionId?: string;
36749
36830
  /**
36750
- * Catalog ID for catalog/Advantage+ Shopping campaigns.
36831
+ * Optional catalog ID. If supplied with productSetId, the set must belong to this catalog. A catalog ID cannot replace productSetId.
36751
36832
  */
36752
36833
  productCatalogId?: string;
36753
36834
  /**
36754
- * Product Set ID inside the catalog.
36835
+ * Meta product SET ID from GET /v1/ads/catalogs/{catalogId}/product-sets. Zernio checks that the token can read the set and its product_catalog before creation. A catalog ID or inaccessible set returns a precise 400 naming promotedObject.productSetId. A mismatch with productCatalogId names promotedObject.productCatalogId.
36755
36836
  */
36756
36837
  productSetId?: string;
36757
36838
  /**