@blezgo/api-sdk 0.1.5 → 0.1.6

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.
Files changed (137) hide show
  1. package/dist/account/generated.d.ts +238 -238
  2. package/dist/account/generated.d.ts.map +1 -1
  3. package/dist/activity/generated.d.ts +57 -57
  4. package/dist/activity/generated.d.ts.map +1 -1
  5. package/dist/addon/generated.d.ts +82 -82
  6. package/dist/addon/generated.d.ts.map +1 -1
  7. package/dist/admin/generated.d.ts +102 -102
  8. package/dist/admin/generated.d.ts.map +1 -1
  9. package/dist/affiliate/generated.d.ts +81 -81
  10. package/dist/affiliate/generated.d.ts.map +1 -1
  11. package/dist/analytics/generated.d.ts +22 -22
  12. package/dist/analytics/generated.d.ts.map +1 -1
  13. package/dist/announcements/generated.d.ts +134 -134
  14. package/dist/announcements/generated.d.ts.map +1 -1
  15. package/dist/apikeys/generated.d.ts +69 -69
  16. package/dist/apikeys/generated.d.ts.map +1 -1
  17. package/dist/assistance/generated.d.ts +22 -22
  18. package/dist/assistance/generated.d.ts.map +1 -1
  19. package/dist/authentication/generated.d.ts +61 -61
  20. package/dist/authentication/generated.d.ts.map +1 -1
  21. package/dist/blog/generated.d.ts +206 -206
  22. package/dist/blog/generated.d.ts.map +1 -1
  23. package/dist/bundle/generated.d.ts +84 -84
  24. package/dist/bundle/generated.d.ts.map +1 -1
  25. package/dist/cache/generated.d.ts +38 -38
  26. package/dist/cache/generated.d.ts.map +1 -1
  27. package/dist/calendar/generated.d.ts +28 -28
  28. package/dist/calendar/generated.d.ts.map +1 -1
  29. package/dist/campaigns/generated.d.ts +174 -174
  30. package/dist/campaigns/generated.d.ts.map +1 -1
  31. package/dist/cart/generated.d.ts +28 -28
  32. package/dist/cart/generated.d.ts.map +1 -1
  33. package/dist/changelog/generated.d.ts +107 -107
  34. package/dist/changelog/generated.d.ts.map +1 -1
  35. package/dist/channel/generated.d.ts +224 -224
  36. package/dist/channel/generated.d.ts.map +1 -1
  37. package/dist/company/generated.d.ts +43 -43
  38. package/dist/company/generated.d.ts.map +1 -1
  39. package/dist/conference/generated.d.ts +74 -74
  40. package/dist/conference/generated.d.ts.map +1 -1
  41. package/dist/config/generated.d.ts +68 -68
  42. package/dist/config/generated.d.ts.map +1 -1
  43. package/dist/content/generated.d.ts +541 -541
  44. package/dist/content/generated.d.ts.map +1 -1
  45. package/dist/cookies/generated.d.ts +36 -36
  46. package/dist/cookies/generated.d.ts.map +1 -1
  47. package/dist/courses/generated.d.ts +436 -436
  48. package/dist/courses/generated.d.ts.map +1 -1
  49. package/dist/custom/generated.d.ts +83 -83
  50. package/dist/custom/generated.d.ts.map +1 -1
  51. package/dist/dashboard/generated.d.ts +214 -214
  52. package/dist/dashboard/generated.d.ts.map +1 -1
  53. package/dist/elasticsearch/generated.d.ts +22 -22
  54. package/dist/elasticsearch/generated.d.ts.map +1 -1
  55. package/dist/enrollments/generated.d.ts +22 -22
  56. package/dist/enrollments/generated.d.ts.map +1 -1
  57. package/dist/errors/generated.d.ts +51 -51
  58. package/dist/errors/generated.d.ts.map +1 -1
  59. package/dist/eventconfig/generated.d.ts +113 -113
  60. package/dist/eventconfig/generated.d.ts.map +1 -1
  61. package/dist/funnels/generated.d.ts +124 -124
  62. package/dist/funnels/generated.d.ts.map +1 -1
  63. package/dist/gamification/generated.d.ts +194 -194
  64. package/dist/gamification/generated.d.ts.map +1 -1
  65. package/dist/impersonation/generated.d.ts +35 -35
  66. package/dist/impersonation/generated.d.ts.map +1 -1
  67. package/dist/inbox/generated.d.ts +138 -138
  68. package/dist/inbox/generated.d.ts.map +1 -1
  69. package/dist/internal/generated.d.ts +22 -22
  70. package/dist/internal/generated.d.ts.map +1 -1
  71. package/dist/internationalization/generated.d.ts +22 -22
  72. package/dist/internationalization/generated.d.ts.map +1 -1
  73. package/dist/invitations/generated.d.ts +111 -111
  74. package/dist/invitations/generated.d.ts.map +1 -1
  75. package/dist/meetings/generated.d.ts +323 -323
  76. package/dist/meetings/generated.d.ts.map +1 -1
  77. package/dist/metas/generated.d.ts +160 -160
  78. package/dist/metas/generated.d.ts.map +1 -1
  79. package/dist/notification/generated.d.ts +246 -246
  80. package/dist/notification/generated.d.ts.map +1 -1
  81. package/dist/notifications/generated.d.ts +22 -22
  82. package/dist/notifications/generated.d.ts.map +1 -1
  83. package/dist/onboarding/generated.d.ts +118 -118
  84. package/dist/onboarding/generated.d.ts.map +1 -1
  85. package/dist/packages/generated.d.ts +80 -80
  86. package/dist/packages/generated.d.ts.map +1 -1
  87. package/dist/payments/generated.d.ts +557 -557
  88. package/dist/payments/generated.d.ts.map +1 -1
  89. package/dist/payouts/generated.d.ts +22 -22
  90. package/dist/payouts/generated.d.ts.map +1 -1
  91. package/dist/plans/generated.d.ts +472 -472
  92. package/dist/plans/generated.d.ts.map +1 -1
  93. package/dist/pricing/generated.d.ts +100 -100
  94. package/dist/pricing/generated.d.ts.map +1 -1
  95. package/dist/products/generated.d.ts +617 -617
  96. package/dist/products/generated.d.ts.map +1 -1
  97. package/dist/profile/generated.d.ts +328 -328
  98. package/dist/profile/generated.d.ts.map +1 -1
  99. package/dist/reasons/generated.d.ts +97 -97
  100. package/dist/reasons/generated.d.ts.map +1 -1
  101. package/dist/registration/generated.d.ts +184 -184
  102. package/dist/registration/generated.d.ts.map +1 -1
  103. package/dist/reviews/generated.d.ts +69 -69
  104. package/dist/reviews/generated.d.ts.map +1 -1
  105. package/dist/role/generated.d.ts +210 -210
  106. package/dist/role/generated.d.ts.map +1 -1
  107. package/dist/scheduling/generated.d.ts +80 -80
  108. package/dist/scheduling/generated.d.ts.map +1 -1
  109. package/dist/services/generated.d.ts +937 -937
  110. package/dist/services/generated.d.ts.map +1 -1
  111. package/dist/sessions/generated.d.ts +363 -363
  112. package/dist/sessions/generated.d.ts.map +1 -1
  113. package/dist/spaces/generated.d.ts +403 -403
  114. package/dist/spaces/generated.d.ts.map +1 -1
  115. package/dist/storefront/generated.d.ts +22 -22
  116. package/dist/storefront/generated.d.ts.map +1 -1
  117. package/dist/support/generated.d.ts +1440 -1440
  118. package/dist/support/generated.d.ts.map +1 -1
  119. package/dist/sync/generated.d.ts +193 -193
  120. package/dist/sync/generated.d.ts.map +1 -1
  121. package/dist/tenant/generated.d.ts +482 -482
  122. package/dist/tenant/generated.d.ts.map +1 -1
  123. package/dist/testimonials/generated.d.ts +65 -65
  124. package/dist/testimonials/generated.d.ts.map +1 -1
  125. package/dist/tests/generated.d.ts +445 -445
  126. package/dist/tests/generated.d.ts.map +1 -1
  127. package/dist/tokens/generated.d.ts +39 -39
  128. package/dist/tokens/generated.d.ts.map +1 -1
  129. package/dist/uploads/generated.d.ts +20 -20
  130. package/dist/uploads/generated.d.ts.map +1 -1
  131. package/dist/upsell/generated.d.ts +108 -108
  132. package/dist/upsell/generated.d.ts.map +1 -1
  133. package/dist/user/generated.d.ts +107 -107
  134. package/dist/user/generated.d.ts.map +1 -1
  135. package/dist/webinars/generated.d.ts +308 -308
  136. package/dist/webinars/generated.d.ts.map +1 -1
  137. package/package.json +1 -1
@@ -1216,60 +1216,6 @@ export interface paths {
1216
1216
  export type webhooks = Record<string, never>;
1217
1217
  export interface components {
1218
1218
  schemas: {
1219
- /**
1220
- * AddBundleItemRequest
1221
- * @example {
1222
- * "discount_percentage": 10,
1223
- * "display_order": 0,
1224
- * "is_required": true,
1225
- * "is_visible": true,
1226
- * "item_product_id": 456,
1227
- * "quantity": 1
1228
- * }
1229
- */
1230
- AddBundleItemRequest: {
1231
- /**
1232
- * Item Product Id
1233
- * @example 456
1234
- */
1235
- item_product_id: number;
1236
- /**
1237
- * Quantity
1238
- * @default 1
1239
- * @example 1
1240
- */
1241
- quantity: number;
1242
- /**
1243
- * Discount Percentage
1244
- * @description Discount % (0-100)
1245
- * @example 10
1246
- */
1247
- discount_percentage?: number | null;
1248
- /**
1249
- * Override Price
1250
- * @description Override price for this item
1251
- * @example 49.99
1252
- */
1253
- override_price?: number | null;
1254
- /**
1255
- * Is Required
1256
- * @default true
1257
- * @example true
1258
- */
1259
- is_required: boolean;
1260
- /**
1261
- * Is Visible
1262
- * @default true
1263
- * @example true
1264
- */
1265
- is_visible: boolean;
1266
- /**
1267
- * Display Order
1268
- * @default 0
1269
- * @example 0
1270
- */
1271
- display_order: number;
1272
- };
1273
1219
  /**
1274
1220
  * VariantInventoryInput
1275
1221
  * @description Inventory data for variant creation.
@@ -1294,328 +1240,250 @@ export interface components {
1294
1240
  allow_backorder: boolean;
1295
1241
  };
1296
1242
  /**
1297
- * ProductType
1298
- * @description Product types supported (11 active types)
1299
- * @enum {string}
1300
- */
1301
- ProductType: "course" | "package" | "session" | "webinar" | "bundle" | "meeting" | "open_class" | "plan" | "test" | "appointment" | "limit_minutes";
1302
- /**
1303
- * VariantCreateRequest
1304
- * @description Request model for creating a product variant.
1243
+ * SeoUpsertRequest
1244
+ * @description Unified SEO upsert schema for all entity types (space, product, service, ...).
1245
+ *
1246
+ * Locale is NOT in this body — it comes from the URL path:
1247
+ * PUT /v1/spaces/admin/{space_id}/seo/{locale}
1248
+ * PUT /v1/products/{product_id}/seo/{locale}
1249
+ *
1250
+ * All fields are optional; supply only what you want to set.
1251
+ * Fields absent from the request body are stored as NULL (PUT semantics — full replace).
1252
+ *
1253
+ * extra='forbid' inherited from BaseSeoFields — unknown keys are rejected.
1254
+ * All validators (robots, URL, og_locale, twitter handle, alternate_languages)
1255
+ * are also inherited from BaseSeoFields.
1256
+ * @example {
1257
+ * "alternate_languages": [
1258
+ * {
1259
+ * "lang": "en-US",
1260
+ * "url": "https://www.example.com/courses/python"
1261
+ * },
1262
+ * {
1263
+ * "lang": "es-PR",
1264
+ * "url": "https://www.example.com/es/cursos/python"
1265
+ * },
1266
+ * {
1267
+ * "lang": "fr-FR",
1268
+ * "url": "https://www.example.com/fr/cours/python"
1269
+ * },
1270
+ * {
1271
+ * "lang": "x-default",
1272
+ * "url": "https://www.example.com/courses/python"
1273
+ * }
1274
+ * ],
1275
+ * "canonical_url": "https://www.example.com/courses/python",
1276
+ * "is_indexable": true,
1277
+ * "meta_description": "Explore our full library of Python courses. Beginner to advanced, taught by industry experts.",
1278
+ * "meta_keywords": "python, programming, learn python, python course, coding",
1279
+ * "meta_title": "Browse Python Courses — Learn at Any Level",
1280
+ * "og_description": "From beginner to advanced. Join 50,000+ learners on MyPlatform.",
1281
+ * "og_image": "https://cdn.example.com/og/python-courses.jpg",
1282
+ * "og_image_alt": "A student learning Python on a laptop in a modern workspace",
1283
+ * "og_image_height": 630,
1284
+ * "og_image_width": 1200,
1285
+ * "og_locale": "en_US",
1286
+ * "og_site_name": "MyPlatform",
1287
+ * "og_title": "Python Courses — Learn at Your Own Pace",
1288
+ * "og_type": "website",
1289
+ * "og_url": "https://www.example.com/courses/python",
1290
+ * "robots": "index,follow,max-snippet:-1,max-image-preview:large,max-video-preview:30",
1291
+ * "structured_data": {
1292
+ * "@context": "https://schema.org",
1293
+ * "@type": "ItemList",
1294
+ * "description": "Browse all Python courses on MyPlatform",
1295
+ * "itemListElement": [
1296
+ * {
1297
+ * "@type": "ListItem",
1298
+ * "name": "Python for Beginners",
1299
+ * "position": 1,
1300
+ * "url": "https://www.example.com/courses/python-beginners"
1301
+ * },
1302
+ * {
1303
+ * "@type": "ListItem",
1304
+ * "name": "Advanced Python",
1305
+ * "position": 2,
1306
+ * "url": "https://www.example.com/courses/python-advanced"
1307
+ * }
1308
+ * ],
1309
+ * "name": "Python Courses",
1310
+ * "numberOfItems": 42,
1311
+ * "url": "https://www.example.com/courses/python"
1312
+ * },
1313
+ * "twitter_card": "summary_large_image",
1314
+ * "twitter_creator": "@myplatform",
1315
+ * "twitter_description": "From beginner to advanced. Join 50,000+ learners.",
1316
+ * "twitter_image": "https://cdn.example.com/twitter/python-courses.jpg",
1317
+ * "twitter_image_alt": "A student learning Python on a laptop",
1318
+ * "twitter_site": "@myplatform",
1319
+ * "twitter_title": "Python Courses on MyPlatform"
1320
+ * }
1305
1321
  */
1306
- VariantCreateRequest: {
1322
+ SeoUpsertRequest: {
1307
1323
  /**
1308
- * Name
1309
- * @description Variant display name: '24 inch Black'
1324
+ * Og Title
1325
+ * @description og:title headline shown in social link previews. Defaults to the entity title if omitted. Keep ≤95 chars.
1310
1326
  */
1311
- name: string;
1327
+ og_title?: string | null;
1312
1328
  /**
1313
- * Sku
1314
- * @description Stock Keeping Unit (unique)
1329
+ * Og Description
1330
+ * @description og:description subtitle shown in social link previews.
1315
1331
  */
1316
- sku?: string | null;
1332
+ og_description?: string | null;
1317
1333
  /**
1318
- * Barcode
1319
- * @description EAN, UPC, ISBN, etc.
1334
+ * Og Image
1335
+ * @description og:image full URL (http/https) of the preview image. Recommended size: 1200×630 px.
1320
1336
  */
1321
- barcode?: string | null;
1337
+ og_image?: string | null;
1322
1338
  /**
1323
- * Attributes
1324
- * @description Variant attributes: {'size': '24 inch', 'color': 'black'}
1325
- * @example {
1326
- * "color": "black",
1327
- * "size": "24 inch"
1328
- * }
1339
+ * Og Type
1340
+ * @description og:type — content type for social platforms. Values: 'website' | 'article' | 'product' | 'video.other' | 'music.song' | 'profile' | 'book'.
1329
1341
  */
1330
- attributes?: {
1331
- [key: string]: unknown;
1332
- } | null;
1342
+ og_type?: ("website" | "article" | "product" | "video.other" | "music.song" | "profile" | "book") | null;
1333
1343
  /**
1334
- * Is Default
1335
- * @description Set as default variant for product
1336
- * @default false
1344
+ * Twitter Card
1345
+ * @description twitter:card card layout on Twitter/X. Values: 'summary' | 'summary_large_image' | 'app' | 'player'.
1337
1346
  */
1338
- is_default: boolean;
1339
- /** @description Inventory settings */
1340
- inventory?: components["schemas"]["VariantInventoryInput"] | null;
1341
- /** @description Pricing for this variant */
1342
- pricing?: components["schemas"]["VariantPricingInput"] | null;
1347
+ twitter_card?: ("summary" | "summary_large_image" | "app" | "player") | null;
1343
1348
  /**
1344
- * Images
1345
- * @description Variant-specific images
1349
+ * Twitter Title
1350
+ * @description twitter:title — overrides og_title for Twitter/X. Keep ≤70 chars.
1346
1351
  */
1347
- images?: components["schemas"]["VariantImageInput"][] | null;
1352
+ twitter_title?: string | null;
1348
1353
  /**
1349
- * Weight
1350
- * @description Weight in kg
1354
+ * Twitter Description
1355
+ * @description twitter:description overrides og_description for Twitter/X.
1351
1356
  */
1352
- weight?: number | string | null;
1357
+ twitter_description?: string | null;
1353
1358
  /**
1354
- * Length
1355
- * @description Length in cm
1359
+ * Twitter Image
1360
+ * @description twitter:image full URL (http/https). Overrides og_image for Twitter/X. Min 144×144 px, max 4096×4096 px.
1356
1361
  */
1357
- length?: number | string | null;
1362
+ twitter_image?: string | null;
1358
1363
  /**
1359
- * Width
1360
- * @description Width in cm
1364
+ * Canonical Url
1365
+ * @description <link rel='canonical'>. Full URL (http/https). Set when this page has duplicate content at another URL.
1361
1366
  */
1362
- width?: number | string | null;
1367
+ canonical_url?: string | null;
1363
1368
  /**
1364
- * Height
1365
- * @description Height in cm
1369
+ * Robots
1370
+ * @description <meta name='robots'>. Comma-separated directives. Simple: index, noindex, follow, nofollow, noarchive, nosnippet, noimageindex, none, all, notranslate, noodp. Parametric: max-snippet:-1, max-snippet:150, max-image-preview:none|standard|large, max-video-preview:-1, max-video-preview:30, unavailable_after:<date>. Examples: 'index,follow' | 'noindex,nofollow' | 'index,follow,max-snippet:-1,max-image-preview:large'.
1366
1371
  */
1367
- height?: number | string | null;
1372
+ robots?: string | null;
1368
1373
  /**
1369
- * Display Order
1370
- * @description Display order
1371
- * @default 100
1374
+ * Meta Title
1375
+ * @description <title> and <meta name='title'>. Keep ≤60 chars for Google display.
1372
1376
  */
1373
- display_order: number;
1377
+ meta_title?: string | null;
1374
1378
  /**
1375
- * Metadata
1376
- * @description Flexible metadata: {'batch_id': 123, 'instructor_id': 456}
1379
+ * Meta Description
1380
+ * @description <meta name='description'>. Keep ≤160 chars for Google display.
1377
1381
  */
1378
- metadata?: {
1379
- [key: string]: unknown;
1380
- } | null;
1381
- };
1382
- Extensions: {
1383
- /** @example GENERIC_ERROR */
1384
- message_code?: string;
1385
- /** @example [] */
1386
- invalid_params?: components["schemas"]["InvalidParam"][];
1387
- extra_data?: Record<string, never> | null;
1388
- /** @example Detailed debug information */
1389
- debug?: string | null;
1390
- };
1391
- /**
1392
- * VariantImageInput
1393
- * @description Image data for variant creation.
1394
- */
1395
- VariantImageInput: {
1382
+ meta_description?: string | null;
1396
1383
  /**
1397
- * Image Url
1398
- * @description Image URL
1384
+ * Meta Keywords
1385
+ * @description Comma-separated keywords. Low weight for Google, used for internal search.
1399
1386
  */
1400
- image_url: string;
1387
+ meta_keywords?: string | null;
1401
1388
  /**
1402
- * Image Type
1403
- * @description primary, gallery, thumbnail
1404
- * @default primary
1389
+ * Og Image Width
1390
+ * @description og:image:width in pixels. Recommended: 1200.
1405
1391
  */
1406
- image_type: string;
1392
+ og_image_width?: number | null;
1407
1393
  /**
1408
- * Display Order
1409
- * @description Display order
1410
- * @default 100
1411
- */
1412
- display_order: number;
1413
- };
1414
- InvalidParam: {
1415
- /** @example items[0].quantity */
1416
- field?: string;
1417
- /** @example Input should be greater than or equal to 1 */
1418
- error?: string;
1419
- };
1420
- /**
1421
- * InventoryAdjustmentRequest
1422
- * @description Request model for inventory adjustment.
1423
- */
1424
- InventoryAdjustmentRequest: {
1425
- /**
1426
- * Adjustment Type
1427
- * @description add, subtract, or set
1428
- */
1429
- adjustment_type: string;
1430
- /**
1431
- * Quantity
1432
- * @description Quantity to add/subtract/set
1433
- */
1434
- quantity: number;
1435
- /**
1436
- * Reason
1437
- * @description Reason for adjustment
1438
- */
1439
- reason?: string | null;
1440
- };
1441
- /**
1442
- * ProductStatus
1443
- * @description Product status values (Phase 1 - VARCHAR)
1444
- * @enum {string}
1445
- */
1446
- ProductStatus: "draft" | "published" | "archived" | "review_required" | "deleted";
1447
- /**
1448
- * ProductPriceType
1449
- * @enum {string}
1450
- */
1451
- ProductPriceType: "free" | "subscription" | "onetime" | "emi";
1452
- ErrorResponse: {
1453
- /** @example about:blank */
1454
- type?: string;
1455
- /** @example GENERIC_ERROR */
1456
- code?: string;
1457
- /** @example Client Error */
1458
- title?: string;
1459
- /** @example 400 */
1460
- status?: number;
1461
- /** @example An error occurred */
1462
- detail?: string;
1463
- /** @example /v1/cart/items */
1464
- instance?: string;
1465
- extensions?: components["schemas"]["Extensions"];
1466
- };
1467
- /**
1468
- * VariantStatus
1469
- * @description Variant status enum.
1470
- * @enum {string}
1471
- */
1472
- VariantStatus: "active" | "inactive" | "out_of_stock" | "discontinued";
1473
- /**
1474
- * ProductIdentityCreateRequest
1475
- * @description Create localized product content
1476
- */
1477
- ProductIdentityCreateRequest: {
1478
- /**
1479
- * @description Locale (language-country format)
1480
- * @example en-US
1481
- */
1482
- locale: components["schemas"]["Locale"];
1483
- /**
1484
- * Title
1485
- * @example Python Programming Course
1486
- */
1487
- title: string;
1488
- /**
1489
- * Subtitle
1490
- * @example Master Python in 30 days
1394
+ * Og Image Height
1395
+ * @description og:image:height in pixels. Recommended: 630.
1491
1396
  */
1492
- subtitle?: string | null;
1397
+ og_image_height?: number | null;
1493
1398
  /**
1494
- * Description
1495
- * @example Comprehensive Python course covering basics to advanced topics
1399
+ * Og Image Alt
1400
+ * @description og:image:alt alt text for the OG image.
1496
1401
  */
1497
- description?: string | null;
1402
+ og_image_alt?: string | null;
1498
1403
  /**
1499
- * Short Description
1500
- * @example Learn Python from scratch with hands-on projects
1404
+ * Og Url
1405
+ * @description og:url canonical URL used by social platforms.
1501
1406
  */
1502
- short_description?: string | null;
1503
- };
1504
- /**
1505
- * ProductCreateRequest
1506
- * @description Create new product (base record only)
1507
- * Identity (title, description, images) managed separately via ProductIdentity endpoints
1508
- */
1509
- ProductCreateRequest: {
1407
+ og_url?: string | null;
1510
1408
  /**
1511
- * Company Id
1512
- * @description Company ID for multi-company orgs
1513
- * @example 1
1409
+ * Og Site Name
1410
+ * @description og:site_name your platform name shown in the link preview card.
1514
1411
  */
1515
- company_id?: number | null;
1412
+ og_site_name?: string | null;
1516
1413
  /**
1517
- * @description Product type
1518
- * @example course
1414
+ * Og Locale
1415
+ * @description og:locale — language in underscore format: en_US, es_ES, fr_FR.
1519
1416
  */
1520
- product_type: components["schemas"]["ProductType"];
1417
+ og_locale?: string | null;
1521
1418
  /**
1522
- * Featured
1523
- * @description Featured product flag
1524
- * @default false
1525
- * @example false
1419
+ * Twitter Image Alt
1420
+ * @description twitter:image:alt alt text for the Twitter card image.
1526
1421
  */
1527
- featured: boolean;
1422
+ twitter_image_alt?: string | null;
1528
1423
  /**
1529
- * Is Digital
1530
- * @description Digital product (default: True)
1531
- * @default true
1532
- * @example true
1424
+ * Twitter Site
1425
+ * @description twitter:site your Twitter/X account handle. Must start with '@'.
1533
1426
  */
1534
- is_digital: boolean;
1427
+ twitter_site?: string | null;
1535
1428
  /**
1536
- * Visibility
1537
- * @description Visibility: public, private, hidden, unlisted
1538
- * @default public
1539
- * @example public
1429
+ * Twitter Creator
1430
+ * @description twitter:creator author's Twitter/X handle. Must start with '@'.
1540
1431
  */
1541
- visibility: string | null;
1432
+ twitter_creator?: string | null;
1542
1433
  /**
1543
- * Is Org Level
1544
- * @description Organization-level product (True) vs user-created (False)
1434
+ * Is Indexable
1435
+ * @description System-level indexing override. False → page is treated as noindex regardless of the robots field. True robots field is authoritative.
1545
1436
  * @default true
1546
- * @example true
1547
- */
1548
- is_org_level: boolean | null;
1549
- /**
1550
- * Staff Id
1551
- * @description Staff/instructor who delivers this product
1552
- * @example 5
1553
- */
1554
- staff_id?: number | null;
1555
- /**
1556
- * Owner Id
1557
- * @description Owner of the product (user who created/owns it)
1558
- * @example 10
1559
1437
  */
1560
- owner_id?: number | null;
1438
+ is_indexable: boolean;
1561
1439
  /**
1562
- * Title
1563
- * @description DEPRECATED: Use ProductIdentity instead
1564
- * @example Python Programming
1440
+ * Structured Data
1441
+ * @description Schema.org JSON-LD object for Google rich results.
1565
1442
  */
1566
- title?: string | null;
1443
+ structured_data?: {
1444
+ [key: string]: unknown;
1445
+ } | null;
1567
1446
  /**
1568
- * Description
1569
- * @description DEPRECATED: Use ProductIdentity instead
1570
- * @example Learn Python from scratch
1447
+ * Alternate Languages
1448
+ * @description hreflang list: [{"lang":"en-US","url":"https://..."},{"lang":"x-default","url":"..."}]. Always include x-default.
1571
1449
  */
1572
- description?: string | null;
1450
+ alternate_languages?: {
1451
+ [key: string]: string;
1452
+ }[] | null;
1573
1453
  };
1574
1454
  /**
1575
- * ProductUpdateRequest
1576
- * @description Update existing product (base record only)
1455
+ * CreateTagRequest
1456
+ * @example {
1457
+ * "color": "#3776AB",
1458
+ * "description": "Programming language tag for Python courses",
1459
+ * "tag_name": "Python Programming",
1460
+ * "tag_type": "skill"
1461
+ * }
1577
1462
  */
1578
- ProductUpdateRequest: {
1579
- /**
1580
- * Company Id
1581
- * @description Company ID
1582
- */
1583
- company_id?: number | null;
1584
- /** @description Product type (rarely changed) */
1585
- product_type?: components["schemas"]["ProductType"] | null;
1586
- /** @description Product status */
1587
- status?: components["schemas"]["ProductStatus"] | null;
1588
- /**
1589
- * Featured
1590
- * @description Featured flag
1591
- */
1592
- featured?: boolean | null;
1593
- /**
1594
- * Is Digital
1595
- * @description Digital product flag
1596
- */
1597
- is_digital?: boolean | null;
1463
+ CreateTagRequest: {
1598
1464
  /**
1599
- * Is Active
1600
- * @description Active status
1465
+ * Tag Name
1466
+ * @example Python Programming
1601
1467
  */
1602
- is_active?: boolean | null;
1468
+ tag_name: string;
1603
1469
  /**
1604
- * Title
1605
- * @description DEPRECATED: Use ProductIdentity instead
1470
+ * Tag Type
1471
+ * @description category, topic, skill, difficulty
1472
+ * @example skill
1606
1473
  */
1607
- title?: string | null;
1474
+ tag_type?: string | null;
1608
1475
  /**
1609
1476
  * Description
1610
- * @description DEPRECATED: Use ProductIdentity instead
1477
+ * @example Programming language tag for Python courses
1611
1478
  */
1612
1479
  description?: string | null;
1480
+ /**
1481
+ * Color
1482
+ * @description HEX color code
1483
+ * @example #3776AB
1484
+ */
1485
+ color?: string | null;
1613
1486
  };
1614
- /**
1615
- * ProductInterval
1616
- * @enum {string}
1617
- */
1618
- ProductInterval: "day" | "week" | "month" | "year";
1619
1487
  /** ProductPriceUpdateRequest */
1620
1488
  ProductPriceUpdateRequest: {
1621
1489
  /** Amount */
@@ -1634,32 +1502,279 @@ export interface components {
1634
1502
  is_active?: boolean | null;
1635
1503
  };
1636
1504
  /**
1637
- * @example {
1638
- * "status": "success",
1639
- * "message": "Operation successful",
1640
- * "message_code": "api_suc_20001",
1641
- * "data": {},
1642
- * "metadata": {
1643
- * "timestamp": "2026-03-26T10:00:00.000Z",
1644
- * "requestId": "07e22004-cb60-4dfc-bc9c-b6f99664dca1",
1645
- * "traceId": "a9f1204c-bb82-41de-b234-7c3a9e120000",
1646
- * "version": "v1",
1647
- * "executionTime": 42,
1648
- * "language": "en-US"
1649
- * }
1650
- * }
1505
+ * VariantPricingInput
1506
+ * @description Pricing data for variant creation.
1651
1507
  */
1652
- StandardResponse: {
1653
- /** @example success */
1654
- status?: string;
1655
- data?: Record<string, never> | null;
1656
- /** @example Operation successful */
1657
- message?: string | null;
1658
- /** @example api_suc_20001 */
1659
- message_code?: string | null;
1660
- metadata?: Record<string, never> | null;
1661
- error?: components["schemas"]["ErrorResponse"];
1508
+ VariantPricingInput: {
1509
+ /**
1510
+ * Amount
1511
+ * @description Price amount
1512
+ */
1513
+ amount: number | string;
1514
+ /**
1515
+ * Currency
1516
+ * @description Currency code
1517
+ * @default USD
1518
+ */
1519
+ currency: string;
1520
+ /**
1521
+ * Interval
1522
+ * @description one_time, daily, weekly, monthly, yearly
1523
+ * @default one_time
1524
+ */
1525
+ interval: string;
1526
+ /**
1527
+ * Interval Count
1528
+ * @description Billing frequency
1529
+ * @default 1
1530
+ */
1531
+ interval_count: number;
1532
+ /**
1533
+ * Is Active
1534
+ * @description Is pricing active
1535
+ * @default true
1536
+ */
1537
+ is_active: boolean;
1538
+ };
1539
+ /**
1540
+ * AddBundleItemRequest
1541
+ * @example {
1542
+ * "discount_percentage": 10,
1543
+ * "display_order": 0,
1544
+ * "is_required": true,
1545
+ * "is_visible": true,
1546
+ * "item_product_id": 456,
1547
+ * "quantity": 1
1548
+ * }
1549
+ */
1550
+ AddBundleItemRequest: {
1551
+ /**
1552
+ * Item Product Id
1553
+ * @example 456
1554
+ */
1555
+ item_product_id: number;
1556
+ /**
1557
+ * Quantity
1558
+ * @default 1
1559
+ * @example 1
1560
+ */
1561
+ quantity: number;
1562
+ /**
1563
+ * Discount Percentage
1564
+ * @description Discount % (0-100)
1565
+ * @example 10
1566
+ */
1567
+ discount_percentage?: number | null;
1568
+ /**
1569
+ * Override Price
1570
+ * @description Override price for this item
1571
+ * @example 49.99
1572
+ */
1573
+ override_price?: number | null;
1574
+ /**
1575
+ * Is Required
1576
+ * @default true
1577
+ * @example true
1578
+ */
1579
+ is_required: boolean;
1580
+ /**
1581
+ * Is Visible
1582
+ * @default true
1583
+ * @example true
1584
+ */
1585
+ is_visible: boolean;
1586
+ /**
1587
+ * Display Order
1588
+ * @default 0
1589
+ * @example 0
1590
+ */
1591
+ display_order: number;
1592
+ };
1593
+ /**
1594
+ * ProductInterval
1595
+ * @enum {string}
1596
+ */
1597
+ ProductInterval: "day" | "week" | "month" | "year";
1598
+ /**
1599
+ * VariantCreateRequest
1600
+ * @description Request model for creating a product variant.
1601
+ */
1602
+ VariantCreateRequest: {
1603
+ /**
1604
+ * Name
1605
+ * @description Variant display name: '24 inch Black'
1606
+ */
1607
+ name: string;
1608
+ /**
1609
+ * Sku
1610
+ * @description Stock Keeping Unit (unique)
1611
+ */
1612
+ sku?: string | null;
1613
+ /**
1614
+ * Barcode
1615
+ * @description EAN, UPC, ISBN, etc.
1616
+ */
1617
+ barcode?: string | null;
1618
+ /**
1619
+ * Attributes
1620
+ * @description Variant attributes: {'size': '24 inch', 'color': 'black'}
1621
+ * @example {
1622
+ * "color": "black",
1623
+ * "size": "24 inch"
1624
+ * }
1625
+ */
1626
+ attributes?: {
1627
+ [key: string]: unknown;
1628
+ } | null;
1629
+ /**
1630
+ * Is Default
1631
+ * @description Set as default variant for product
1632
+ * @default false
1633
+ */
1634
+ is_default: boolean;
1635
+ /** @description Inventory settings */
1636
+ inventory?: components["schemas"]["VariantInventoryInput"] | null;
1637
+ /** @description Pricing for this variant */
1638
+ pricing?: components["schemas"]["VariantPricingInput"] | null;
1639
+ /**
1640
+ * Images
1641
+ * @description Variant-specific images
1642
+ */
1643
+ images?: components["schemas"]["VariantImageInput"][] | null;
1644
+ /**
1645
+ * Weight
1646
+ * @description Weight in kg
1647
+ */
1648
+ weight?: number | string | null;
1649
+ /**
1650
+ * Length
1651
+ * @description Length in cm
1652
+ */
1653
+ length?: number | string | null;
1654
+ /**
1655
+ * Width
1656
+ * @description Width in cm
1657
+ */
1658
+ width?: number | string | null;
1659
+ /**
1660
+ * Height
1661
+ * @description Height in cm
1662
+ */
1663
+ height?: number | string | null;
1664
+ /**
1665
+ * Display Order
1666
+ * @description Display order
1667
+ * @default 100
1668
+ */
1669
+ display_order: number;
1670
+ /**
1671
+ * Metadata
1672
+ * @description Flexible metadata: {'batch_id': 123, 'instructor_id': 456}
1673
+ */
1674
+ metadata?: {
1675
+ [key: string]: unknown;
1676
+ } | null;
1677
+ };
1678
+ /**
1679
+ * InventoryAdjustmentRequest
1680
+ * @description Request model for inventory adjustment.
1681
+ */
1682
+ InventoryAdjustmentRequest: {
1683
+ /**
1684
+ * Adjustment Type
1685
+ * @description add, subtract, or set
1686
+ */
1687
+ adjustment_type: string;
1688
+ /**
1689
+ * Quantity
1690
+ * @description Quantity to add/subtract/set
1691
+ */
1692
+ quantity: number;
1693
+ /**
1694
+ * Reason
1695
+ * @description Reason for adjustment
1696
+ */
1697
+ reason?: string | null;
1698
+ };
1699
+ /**
1700
+ * VariantStatus
1701
+ * @description Variant status enum.
1702
+ * @enum {string}
1703
+ */
1704
+ VariantStatus: "active" | "inactive" | "out_of_stock" | "discontinued";
1705
+ /**
1706
+ * VariantImageInput
1707
+ * @description Image data for variant creation.
1708
+ */
1709
+ VariantImageInput: {
1710
+ /**
1711
+ * Image Url
1712
+ * @description Image URL
1713
+ */
1714
+ image_url: string;
1715
+ /**
1716
+ * Image Type
1717
+ * @description primary, gallery, thumbnail
1718
+ * @default primary
1719
+ */
1720
+ image_type: string;
1721
+ /**
1722
+ * Display Order
1723
+ * @description Display order
1724
+ * @default 100
1725
+ */
1726
+ display_order: number;
1727
+ };
1728
+ /**
1729
+ * ProductPriceType
1730
+ * @enum {string}
1731
+ */
1732
+ ProductPriceType: "free" | "subscription" | "onetime" | "emi";
1733
+ /**
1734
+ * ProductIdentityCreateRequest
1735
+ * @description Create localized product content
1736
+ */
1737
+ ProductIdentityCreateRequest: {
1738
+ /**
1739
+ * @description Locale (language-country format)
1740
+ * @example en-US
1741
+ */
1742
+ locale: components["schemas"]["Locale"];
1743
+ /**
1744
+ * Title
1745
+ * @example Python Programming Course
1746
+ */
1747
+ title: string;
1748
+ /**
1749
+ * Subtitle
1750
+ * @example Master Python in 30 days
1751
+ */
1752
+ subtitle?: string | null;
1753
+ /**
1754
+ * Description
1755
+ * @example Comprehensive Python course covering basics to advanced topics
1756
+ */
1757
+ description?: string | null;
1758
+ /**
1759
+ * Short Description
1760
+ * @example Learn Python from scratch with hands-on projects
1761
+ */
1762
+ short_description?: string | null;
1763
+ };
1764
+ /** Body_createProductImageUpload */
1765
+ Body_createProductImageUpload: {
1766
+ /**
1767
+ * Image File
1768
+ * Format: binary
1769
+ */
1770
+ image_file: string;
1662
1771
  };
1772
+ /**
1773
+ * Locale
1774
+ * @description Supported locales (language-country format)
1775
+ * @enum {string}
1776
+ */
1777
+ Locale: "en-US" | "es-PR" | "es-ES" | "fr-FR" | "pt-BR" | "de-DE" | "it-IT" | "ja-JP" | "zh-CN";
1663
1778
  /**
1664
1779
  * VariantUpdateRequest
1665
1780
  * @description Request model for updating a variant.
@@ -1699,274 +1814,212 @@ export interface components {
1699
1814
  /** Height */
1700
1815
  height?: number | string | null;
1701
1816
  };
1702
- /** Body_createProductImage */
1703
- Body_createProductImage: {
1704
- /**
1705
- * File
1706
- * Format: binary
1707
- */
1708
- file: string;
1817
+ /**
1818
+ * ProductType
1819
+ * @description Product types supported (11 active types)
1820
+ * @enum {string}
1821
+ */
1822
+ ProductType: "course" | "package" | "session" | "webinar" | "bundle" | "meeting" | "open_class" | "plan" | "test" | "appointment" | "limit_minutes";
1823
+ ErrorResponse: {
1824
+ /** @example about:blank */
1825
+ type?: string;
1826
+ /** @example GENERIC_ERROR */
1827
+ code?: string;
1828
+ /** @example Client Error */
1829
+ title?: string;
1830
+ /** @example 400 */
1831
+ status?: number;
1832
+ /** @example An error occurred */
1833
+ detail?: string;
1834
+ /** @example /v1/cart/items */
1835
+ instance?: string;
1836
+ extensions?: components["schemas"]["Extensions"];
1709
1837
  };
1710
1838
  /**
1711
- * SeoUpsertRequest
1712
- * @description Unified SEO upsert schema for all entity types (space, product, service, ...).
1713
- *
1714
- * Locale is NOT in this body — it comes from the URL path:
1715
- * PUT /v1/spaces/admin/{space_id}/seo/{locale}
1716
- * PUT /v1/products/{product_id}/seo/{locale}
1717
- *
1718
- * All fields are optional; supply only what you want to set.
1719
- * Fields absent from the request body are stored as NULL (PUT semantics — full replace).
1720
- *
1721
- * extra='forbid' inherited from BaseSeoFields — unknown keys are rejected.
1722
- * All validators (robots, URL, og_locale, twitter handle, alternate_languages)
1723
- * are also inherited from BaseSeoFields.
1724
- * @example {
1725
- * "alternate_languages": [
1726
- * {
1727
- * "lang": "en-US",
1728
- * "url": "https://www.example.com/courses/python"
1729
- * },
1730
- * {
1731
- * "lang": "es-PR",
1732
- * "url": "https://www.example.com/es/cursos/python"
1733
- * },
1734
- * {
1735
- * "lang": "fr-FR",
1736
- * "url": "https://www.example.com/fr/cours/python"
1737
- * },
1738
- * {
1739
- * "lang": "x-default",
1740
- * "url": "https://www.example.com/courses/python"
1741
- * }
1742
- * ],
1743
- * "canonical_url": "https://www.example.com/courses/python",
1744
- * "is_indexable": true,
1745
- * "meta_description": "Explore our full library of Python courses. Beginner to advanced, taught by industry experts.",
1746
- * "meta_keywords": "python, programming, learn python, python course, coding",
1747
- * "meta_title": "Browse Python Courses — Learn at Any Level",
1748
- * "og_description": "From beginner to advanced. Join 50,000+ learners on MyPlatform.",
1749
- * "og_image": "https://cdn.example.com/og/python-courses.jpg",
1750
- * "og_image_alt": "A student learning Python on a laptop in a modern workspace",
1751
- * "og_image_height": 630,
1752
- * "og_image_width": 1200,
1753
- * "og_locale": "en_US",
1754
- * "og_site_name": "MyPlatform",
1755
- * "og_title": "Python Courses — Learn at Your Own Pace",
1756
- * "og_type": "website",
1757
- * "og_url": "https://www.example.com/courses/python",
1758
- * "robots": "index,follow,max-snippet:-1,max-image-preview:large,max-video-preview:30",
1759
- * "structured_data": {
1760
- * "@context": "https://schema.org",
1761
- * "@type": "ItemList",
1762
- * "description": "Browse all Python courses on MyPlatform",
1763
- * "itemListElement": [
1764
- * {
1765
- * "@type": "ListItem",
1766
- * "name": "Python for Beginners",
1767
- * "position": 1,
1768
- * "url": "https://www.example.com/courses/python-beginners"
1769
- * },
1770
- * {
1771
- * "@type": "ListItem",
1772
- * "name": "Advanced Python",
1773
- * "position": 2,
1774
- * "url": "https://www.example.com/courses/python-advanced"
1775
- * }
1776
- * ],
1777
- * "name": "Python Courses",
1778
- * "numberOfItems": 42,
1779
- * "url": "https://www.example.com/courses/python"
1780
- * },
1781
- * "twitter_card": "summary_large_image",
1782
- * "twitter_creator": "@myplatform",
1783
- * "twitter_description": "From beginner to advanced. Join 50,000+ learners.",
1784
- * "twitter_image": "https://cdn.example.com/twitter/python-courses.jpg",
1785
- * "twitter_image_alt": "A student learning Python on a laptop",
1786
- * "twitter_site": "@myplatform",
1787
- * "twitter_title": "Python Courses on MyPlatform"
1788
- * }
1839
+ * ProductCreateRequest
1840
+ * @description Create new product (base record only)
1841
+ * Identity (title, description, images) managed separately via ProductIdentity endpoints
1789
1842
  */
1790
- SeoUpsertRequest: {
1791
- /**
1792
- * Og Title
1793
- * @description og:title headline shown in social link previews. Defaults to the entity title if omitted. Keep ≤95 chars.
1794
- */
1795
- og_title?: string | null;
1796
- /**
1797
- * Og Description
1798
- * @description og:description — subtitle shown in social link previews.
1799
- */
1800
- og_description?: string | null;
1801
- /**
1802
- * Og Image
1803
- * @description og:image — full URL (http/https) of the preview image. Recommended size: 1200×630 px.
1804
- */
1805
- og_image?: string | null;
1806
- /**
1807
- * Og Type
1808
- * @description og:type — content type for social platforms. Values: 'website' | 'article' | 'product' | 'video.other' | 'music.song' | 'profile' | 'book'.
1809
- */
1810
- og_type?: ("website" | "article" | "product" | "video.other" | "music.song" | "profile" | "book") | null;
1811
- /**
1812
- * Twitter Card
1813
- * @description twitter:card — card layout on Twitter/X. Values: 'summary' | 'summary_large_image' | 'app' | 'player'.
1814
- */
1815
- twitter_card?: ("summary" | "summary_large_image" | "app" | "player") | null;
1816
- /**
1817
- * Twitter Title
1818
- * @description twitter:title — overrides og_title for Twitter/X. Keep ≤70 chars.
1819
- */
1820
- twitter_title?: string | null;
1821
- /**
1822
- * Twitter Description
1823
- * @description twitter:description — overrides og_description for Twitter/X.
1824
- */
1825
- twitter_description?: string | null;
1826
- /**
1827
- * Twitter Image
1828
- * @description twitter:image — full URL (http/https). Overrides og_image for Twitter/X. Min 144×144 px, max 4096×4096 px.
1829
- */
1830
- twitter_image?: string | null;
1831
- /**
1832
- * Canonical Url
1833
- * @description <link rel='canonical'>. Full URL (http/https). Set when this page has duplicate content at another URL.
1834
- */
1835
- canonical_url?: string | null;
1836
- /**
1837
- * Robots
1838
- * @description <meta name='robots'>. Comma-separated directives. Simple: index, noindex, follow, nofollow, noarchive, nosnippet, noimageindex, none, all, notranslate, noodp. Parametric: max-snippet:-1, max-snippet:150, max-image-preview:none|standard|large, max-video-preview:-1, max-video-preview:30, unavailable_after:<date>. Examples: 'index,follow' | 'noindex,nofollow' | 'index,follow,max-snippet:-1,max-image-preview:large'.
1839
- */
1840
- robots?: string | null;
1841
- /**
1842
- * Meta Title
1843
- * @description <title> and <meta name='title'>. Keep ≤60 chars for Google display.
1844
- */
1845
- meta_title?: string | null;
1846
- /**
1847
- * Meta Description
1848
- * @description <meta name='description'>. Keep ≤160 chars for Google display.
1849
- */
1850
- meta_description?: string | null;
1851
- /**
1852
- * Meta Keywords
1853
- * @description Comma-separated keywords. Low weight for Google, used for internal search.
1854
- */
1855
- meta_keywords?: string | null;
1856
- /**
1857
- * Og Image Width
1858
- * @description og:image:width in pixels. Recommended: 1200.
1859
- */
1860
- og_image_width?: number | null;
1861
- /**
1862
- * Og Image Height
1863
- * @description og:image:height in pixels. Recommended: 630.
1864
- */
1865
- og_image_height?: number | null;
1866
- /**
1867
- * Og Image Alt
1868
- * @description og:image:alt — alt text for the OG image.
1843
+ ProductCreateRequest: {
1844
+ /**
1845
+ * Company Id
1846
+ * @description Company ID for multi-company orgs
1847
+ * @example 1
1869
1848
  */
1870
- og_image_alt?: string | null;
1849
+ company_id?: number | null;
1871
1850
  /**
1872
- * Og Url
1873
- * @description og:url — canonical URL used by social platforms.
1851
+ * @description Product type
1852
+ * @example course
1874
1853
  */
1875
- og_url?: string | null;
1854
+ product_type: components["schemas"]["ProductType"];
1876
1855
  /**
1877
- * Og Site Name
1878
- * @description og:site_name your platform name shown in the link preview card.
1856
+ * Featured
1857
+ * @description Featured product flag
1858
+ * @default false
1859
+ * @example false
1879
1860
  */
1880
- og_site_name?: string | null;
1861
+ featured: boolean;
1881
1862
  /**
1882
- * Og Locale
1883
- * @description og:locale language in underscore format: en_US, es_ES, fr_FR.
1863
+ * Is Digital
1864
+ * @description Digital product (default: True)
1865
+ * @default true
1866
+ * @example true
1884
1867
  */
1885
- og_locale?: string | null;
1868
+ is_digital: boolean;
1886
1869
  /**
1887
- * Twitter Image Alt
1888
- * @description twitter:image:alt alt text for the Twitter card image.
1870
+ * Visibility
1871
+ * @description Visibility: public, private, hidden, unlisted
1872
+ * @default public
1873
+ * @example public
1889
1874
  */
1890
- twitter_image_alt?: string | null;
1875
+ visibility: string | null;
1891
1876
  /**
1892
- * Twitter Site
1893
- * @description twitter:site your Twitter/X account handle. Must start with '@'.
1877
+ * Is Org Level
1878
+ * @description Organization-level product (True) vs user-created (False)
1879
+ * @default true
1880
+ * @example true
1894
1881
  */
1895
- twitter_site?: string | null;
1882
+ is_org_level: boolean | null;
1896
1883
  /**
1897
- * Twitter Creator
1898
- * @description twitter:creator — author's Twitter/X handle. Must start with '@'.
1884
+ * Staff Id
1885
+ * @description Staff/instructor who delivers this product
1886
+ * @example 5
1899
1887
  */
1900
- twitter_creator?: string | null;
1888
+ staff_id?: number | null;
1901
1889
  /**
1902
- * Is Indexable
1903
- * @description System-level indexing override. False → page is treated as noindex regardless of the robots field. True robots field is authoritative.
1904
- * @default true
1890
+ * Owner Id
1891
+ * @description Owner of the product (user who created/owns it)
1892
+ * @example 10
1905
1893
  */
1906
- is_indexable: boolean;
1894
+ owner_id?: number | null;
1907
1895
  /**
1908
- * Structured Data
1909
- * @description Schema.org JSON-LD object for Google rich results.
1896
+ * Title
1897
+ * @description DEPRECATED: Use ProductIdentity instead
1898
+ * @example Python Programming
1910
1899
  */
1911
- structured_data?: {
1912
- [key: string]: unknown;
1913
- } | null;
1900
+ title?: string | null;
1914
1901
  /**
1915
- * Alternate Languages
1916
- * @description hreflang list: [{"lang":"en-US","url":"https://..."},{"lang":"x-default","url":"..."}]. Always include x-default.
1902
+ * Description
1903
+ * @description DEPRECATED: Use ProductIdentity instead
1904
+ * @example Learn Python from scratch
1917
1905
  */
1918
- alternate_languages?: {
1919
- [key: string]: string;
1920
- }[] | null;
1906
+ description?: string | null;
1921
1907
  };
1922
1908
  /**
1923
- * VariantPricingInput
1924
- * @description Pricing data for variant creation.
1909
+ * ProductStatus
1910
+ * @description Product status values (Phase 1 - VARCHAR)
1911
+ * @enum {string}
1925
1912
  */
1926
- VariantPricingInput: {
1913
+ ProductStatus: "draft" | "published" | "archived" | "review_required" | "deleted";
1914
+ Extensions: {
1915
+ /** @example GENERIC_ERROR */
1916
+ message_code?: string;
1917
+ /** @example [] */
1918
+ invalid_params?: components["schemas"]["InvalidParam"][];
1919
+ extra_data?: Record<string, never> | null;
1920
+ /** @example Detailed debug information */
1921
+ debug?: string | null;
1922
+ };
1923
+ InvalidParam: {
1924
+ /** @example items[0].quantity */
1925
+ field?: string;
1926
+ /** @example Input should be greater than or equal to 1 */
1927
+ error?: string;
1928
+ };
1929
+ /**
1930
+ * ProductUpdateRequest
1931
+ * @description Update existing product (base record only)
1932
+ */
1933
+ ProductUpdateRequest: {
1927
1934
  /**
1928
- * Amount
1929
- * @description Price amount
1935
+ * Company Id
1936
+ * @description Company ID
1930
1937
  */
1931
- amount: number | string;
1938
+ company_id?: number | null;
1939
+ /** @description Product type (rarely changed) */
1940
+ product_type?: components["schemas"]["ProductType"] | null;
1941
+ /** @description Product status */
1942
+ status?: components["schemas"]["ProductStatus"] | null;
1932
1943
  /**
1933
- * Currency
1934
- * @description Currency code
1935
- * @default USD
1944
+ * Featured
1945
+ * @description Featured flag
1936
1946
  */
1937
- currency: string;
1947
+ featured?: boolean | null;
1938
1948
  /**
1939
- * Interval
1940
- * @description one_time, daily, weekly, monthly, yearly
1941
- * @default one_time
1949
+ * Is Digital
1950
+ * @description Digital product flag
1942
1951
  */
1943
- interval: string;
1952
+ is_digital?: boolean | null;
1944
1953
  /**
1945
- * Interval Count
1946
- * @description Billing frequency
1947
- * @default 1
1954
+ * Is Active
1955
+ * @description Active status
1948
1956
  */
1949
- interval_count: number;
1957
+ is_active?: boolean | null;
1950
1958
  /**
1951
- * Is Active
1952
- * @description Is pricing active
1953
- * @default true
1959
+ * Title
1960
+ * @description DEPRECATED: Use ProductIdentity instead
1954
1961
  */
1955
- is_active: boolean;
1962
+ title?: string | null;
1963
+ /**
1964
+ * Description
1965
+ * @description DEPRECATED: Use ProductIdentity instead
1966
+ */
1967
+ description?: string | null;
1956
1968
  };
1957
1969
  /**
1958
- * Locale
1959
- * @description Supported locales (language-country format)
1960
- * @enum {string}
1970
+ * AddTagToProductRequest
1971
+ * @example {
1972
+ * "display_order": 0,
1973
+ * "tag_id": 5
1974
+ * }
1961
1975
  */
1962
- Locale: "en-US" | "es-PR" | "es-ES" | "fr-FR" | "pt-BR" | "de-DE" | "it-IT" | "ja-JP" | "zh-CN";
1963
- /** Body_createProductImageUpload */
1964
- Body_createProductImageUpload: {
1976
+ AddTagToProductRequest: {
1965
1977
  /**
1966
- * Image File
1978
+ * Tag Id
1979
+ * @example 5
1980
+ */
1981
+ tag_id: number;
1982
+ /**
1983
+ * Display Order
1984
+ * @default 0
1985
+ * @example 0
1986
+ */
1987
+ display_order: number;
1988
+ };
1989
+ /** Body_createProductImage */
1990
+ Body_createProductImage: {
1991
+ /**
1992
+ * File
1967
1993
  * Format: binary
1968
1994
  */
1969
- image_file: string;
1995
+ file: string;
1996
+ };
1997
+ /**
1998
+ * @example {
1999
+ * "status": "success",
2000
+ * "message": "Operation successful",
2001
+ * "message_code": "api_suc_20001",
2002
+ * "data": {},
2003
+ * "metadata": {
2004
+ * "timestamp": "2026-03-26T10:00:00.000Z",
2005
+ * "requestId": "07e22004-cb60-4dfc-bc9c-b6f99664dca1",
2006
+ * "traceId": "a9f1204c-bb82-41de-b234-7c3a9e120000",
2007
+ * "version": "v1",
2008
+ * "executionTime": 42,
2009
+ * "language": "en-US"
2010
+ * }
2011
+ * }
2012
+ */
2013
+ StandardResponse: {
2014
+ /** @example success */
2015
+ status?: string;
2016
+ data?: Record<string, never> | null;
2017
+ /** @example Operation successful */
2018
+ message?: string | null;
2019
+ /** @example api_suc_20001 */
2020
+ message_code?: string | null;
2021
+ metadata?: Record<string, never> | null;
2022
+ error?: components["schemas"]["ErrorResponse"];
1970
2023
  };
1971
2024
  /** ProductPriceRequest */
1972
2025
  ProductPriceRequest: {
@@ -2037,64 +2090,11 @@ export interface components {
2037
2090
  */
2038
2091
  requires_payment_method_upfront: boolean;
2039
2092
  };
2040
- /**
2041
- * AddTagToProductRequest
2042
- * @example {
2043
- * "display_order": 0,
2044
- * "tag_id": 5
2045
- * }
2046
- */
2047
- AddTagToProductRequest: {
2048
- /**
2049
- * Tag Id
2050
- * @example 5
2051
- */
2052
- tag_id: number;
2053
- /**
2054
- * Display Order
2055
- * @default 0
2056
- * @example 0
2057
- */
2058
- display_order: number;
2059
- };
2060
2093
  /**
2061
2094
  * ProductCurrency
2062
2095
  * @enum {string}
2063
2096
  */
2064
2097
  ProductCurrency: "USD" | "INR" | "EUR" | "GBP";
2065
- /**
2066
- * CreateTagRequest
2067
- * @example {
2068
- * "color": "#3776AB",
2069
- * "description": "Programming language tag for Python courses",
2070
- * "tag_name": "Python Programming",
2071
- * "tag_type": "skill"
2072
- * }
2073
- */
2074
- app__routes__products__product_phase2_routes__CreateTagRequest: {
2075
- /**
2076
- * Tag Name
2077
- * @example Python Programming
2078
- */
2079
- tag_name: string;
2080
- /**
2081
- * Tag Type
2082
- * @description category, topic, skill, difficulty
2083
- * @example skill
2084
- */
2085
- tag_type?: string | null;
2086
- /**
2087
- * Description
2088
- * @example Programming language tag for Python courses
2089
- */
2090
- description?: string | null;
2091
- /**
2092
- * Color
2093
- * @description HEX color code
2094
- * @example #3776AB
2095
- */
2096
- color?: string | null;
2097
- };
2098
2098
  };
2099
2099
  responses: never;
2100
2100
  parameters: never;
@@ -7865,7 +7865,7 @@ export interface operations {
7865
7865
  };
7866
7866
  requestBody: {
7867
7867
  content: {
7868
- "application/json": components["schemas"]["app__routes__products__product_phase2_routes__CreateTagRequest"];
7868
+ "application/json": components["schemas"]["CreateTagRequest"];
7869
7869
  };
7870
7870
  };
7871
7871
  responses: {