@apergrex/n8n-nodes-franklab 0.1.2 → 0.2.1

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 (126) hide show
  1. package/README.md +144 -7
  2. package/dist/nodes/Alibaba/Alibaba.node.json +10 -0
  3. package/dist/nodes/Alibaba/FrankLabAlibaba.node.d.ts +5 -0
  4. package/dist/nodes/Alibaba/FrankLabAlibaba.node.js +167 -0
  5. package/dist/nodes/Alibaba/FrankLabAlibaba.node.js.map +1 -0
  6. package/dist/nodes/Alibaba/alibaba.svg +4 -0
  7. package/dist/nodes/Aries/Aries.node.json +10 -0
  8. package/dist/nodes/Aries/FrankLabAries.node.d.ts +5 -0
  9. package/dist/nodes/Aries/FrankLabAries.node.js +48 -0
  10. package/dist/nodes/Aries/FrankLabAries.node.js.map +1 -0
  11. package/dist/nodes/Aries/aries.svg +6 -0
  12. package/dist/nodes/C2pa/FrankLabC2pa.node.js +1 -0
  13. package/dist/nodes/C2pa/FrankLabC2pa.node.js.map +1 -1
  14. package/dist/nodes/Dola/Dola.node.json +10 -0
  15. package/dist/nodes/Dola/FrankLabDola.node.d.ts +5 -0
  16. package/dist/nodes/Dola/FrankLabDola.node.js +155 -0
  17. package/dist/nodes/Dola/FrankLabDola.node.js.map +1 -0
  18. package/dist/nodes/Dola/dola.svg +6 -0
  19. package/dist/nodes/Holst/FrankLabHolst.node.js +9 -12
  20. package/dist/nodes/Holst/FrankLabHolst.node.js.map +1 -1
  21. package/dist/nodes/HotCoffe/FrankLabHotCoffe.node.d.ts +5 -0
  22. package/dist/nodes/HotCoffe/FrankLabHotCoffe.node.js +129 -0
  23. package/dist/nodes/HotCoffe/FrankLabHotCoffe.node.js.map +1 -0
  24. package/dist/nodes/HotCoffe/HotCoffe.node.json +10 -0
  25. package/dist/nodes/HotCoffe/hotcoffe.svg +6 -0
  26. package/dist/nodes/Jupiter/FrankLabJupiter.node.d.ts +5 -0
  27. package/dist/nodes/Jupiter/FrankLabJupiter.node.js +132 -0
  28. package/dist/nodes/Jupiter/FrankLabJupiter.node.js.map +1 -0
  29. package/dist/nodes/Jupiter/Jupiter.node.json +10 -0
  30. package/dist/nodes/Jupiter/jupiter.svg +7 -0
  31. package/dist/nodes/Kley/FrankLabKley.node.js +1 -0
  32. package/dist/nodes/Kley/FrankLabKley.node.js.map +1 -1
  33. package/dist/nodes/Kusok/FrankLabKusok.node.d.ts +5 -0
  34. package/dist/nodes/Kusok/FrankLabKusok.node.js +188 -0
  35. package/dist/nodes/Kusok/FrankLabKusok.node.js.map +1 -0
  36. package/dist/nodes/Kusok/Kusok.node.json +10 -0
  37. package/dist/nodes/Kusok/kusok.svg +7 -0
  38. package/dist/nodes/Mars/FrankLabMars.node.d.ts +5 -0
  39. package/dist/nodes/Mars/FrankLabMars.node.js +178 -0
  40. package/dist/nodes/Mars/FrankLabMars.node.js.map +1 -0
  41. package/dist/nodes/Mars/Mars.node.json +10 -0
  42. package/dist/nodes/Mars/mars.svg +6 -0
  43. package/dist/nodes/Mercury/FrankLabMercury.node.d.ts +5 -0
  44. package/dist/nodes/Mercury/FrankLabMercury.node.js +84 -0
  45. package/dist/nodes/Mercury/FrankLabMercury.node.js.map +1 -0
  46. package/dist/nodes/Mercury/Mercury.node.json +10 -0
  47. package/dist/nodes/Mercury/mercury.svg +6 -0
  48. package/dist/nodes/Minimax/FrankLabMinimax.node.d.ts +5 -0
  49. package/dist/nodes/Minimax/FrankLabMinimax.node.js +157 -0
  50. package/dist/nodes/Minimax/FrankLabMinimax.node.js.map +1 -0
  51. package/dist/nodes/Minimax/Minimax.node.json +10 -0
  52. package/dist/nodes/Minimax/minimax.svg +5 -0
  53. package/dist/nodes/Moon/FrankLabMoon.node.d.ts +5 -0
  54. package/dist/nodes/Moon/FrankLabMoon.node.js +132 -0
  55. package/dist/nodes/Moon/FrankLabMoon.node.js.map +1 -0
  56. package/dist/nodes/Moon/Moon.node.json +10 -0
  57. package/dist/nodes/Moon/moon.svg +5 -0
  58. package/dist/nodes/Neptune/FrankLabNeptune.node.d.ts +5 -0
  59. package/dist/nodes/Neptune/FrankLabNeptune.node.js +80 -0
  60. package/dist/nodes/Neptune/FrankLabNeptune.node.js.map +1 -0
  61. package/dist/nodes/Neptune/Neptune.node.json +10 -0
  62. package/dist/nodes/Neptune/neptune.svg +5 -0
  63. package/dist/nodes/Omni/FrankLabOmni.node.d.ts +5 -0
  64. package/dist/nodes/Omni/FrankLabOmni.node.js +194 -0
  65. package/dist/nodes/Omni/FrankLabOmni.node.js.map +1 -0
  66. package/dist/nodes/Omni/Omni.node.json +10 -0
  67. package/dist/nodes/Omni/omni.svg +6 -0
  68. package/dist/nodes/Orkestr/FrankLabOrkestr.node.d.ts +5 -0
  69. package/dist/nodes/Orkestr/FrankLabOrkestr.node.js +243 -0
  70. package/dist/nodes/Orkestr/FrankLabOrkestr.node.js.map +1 -0
  71. package/dist/nodes/Orkestr/Orkestr.node.json +10 -0
  72. package/dist/nodes/Orkestr/orkestr.svg +6 -0
  73. package/dist/nodes/Plastinka/FrankLabPlastinka.node.js +1 -0
  74. package/dist/nodes/Plastinka/FrankLabPlastinka.node.js.map +1 -1
  75. package/dist/nodes/Pluto/FrankLabPluto.node.d.ts +5 -0
  76. package/dist/nodes/Pluto/FrankLabPluto.node.js +74 -0
  77. package/dist/nodes/Pluto/FrankLabPluto.node.js.map +1 -0
  78. package/dist/nodes/Pluto/Pluto.node.json +10 -0
  79. package/dist/nodes/Pluto/pluto.svg +6 -0
  80. package/dist/nodes/Saturn/FrankLabSaturn.node.d.ts +5 -0
  81. package/dist/nodes/Saturn/FrankLabSaturn.node.js +117 -0
  82. package/dist/nodes/Saturn/FrankLabSaturn.node.js.map +1 -0
  83. package/dist/nodes/Saturn/Saturn.node.json +10 -0
  84. package/dist/nodes/Saturn/saturn.svg +5 -0
  85. package/dist/nodes/Sufler/FrankLabSufler.node.d.ts +5 -0
  86. package/dist/nodes/Sufler/FrankLabSufler.node.js +129 -0
  87. package/dist/nodes/Sufler/FrankLabSufler.node.js.map +1 -0
  88. package/dist/nodes/Sufler/Sufler.node.json +10 -0
  89. package/dist/nodes/Sufler/sufler.svg +6 -0
  90. package/dist/nodes/TextSticker/FrankLabTextSticker.node.d.ts +5 -0
  91. package/dist/nodes/TextSticker/FrankLabTextSticker.node.js +89 -0
  92. package/dist/nodes/TextSticker/FrankLabTextSticker.node.js.map +1 -0
  93. package/dist/nodes/TextSticker/TextSticker.node.json +10 -0
  94. package/dist/nodes/TextSticker/textsticker.svg +8 -0
  95. package/dist/nodes/Titan/FrankLabTitan.node.d.ts +5 -0
  96. package/dist/nodes/Titan/FrankLabTitan.node.js +85 -0
  97. package/dist/nodes/Titan/FrankLabTitan.node.js.map +1 -0
  98. package/dist/nodes/Titan/Titan.node.json +10 -0
  99. package/dist/nodes/Titan/titan.svg +7 -0
  100. package/dist/nodes/Venus/FrankLabVenus.node.d.ts +5 -0
  101. package/dist/nodes/Venus/FrankLabVenus.node.js +95 -0
  102. package/dist/nodes/Venus/FrankLabVenus.node.js.map +1 -0
  103. package/dist/nodes/Venus/Venus.node.json +10 -0
  104. package/dist/nodes/Venus/venus.svg +7 -0
  105. package/dist/nodes/Volna/FrankLabVolna.node.js +1 -0
  106. package/dist/nodes/Volna/FrankLabVolna.node.js.map +1 -1
  107. package/dist/nodes/X/FrankLabX.node.d.ts +5 -0
  108. package/dist/nodes/X/FrankLabX.node.js +133 -0
  109. package/dist/nodes/X/FrankLabX.node.js.map +1 -0
  110. package/dist/nodes/X/X.node.json +10 -0
  111. package/dist/nodes/X/x.svg +4 -0
  112. package/dist/nodes/shared/client.js +36 -11
  113. package/dist/nodes/shared/client.js.map +1 -1
  114. package/dist/nodes/shared/node-utils.d.ts +1 -0
  115. package/dist/nodes/shared/node-utils.js +233 -21
  116. package/dist/nodes/shared/node-utils.js.map +1 -1
  117. package/dist/nodes/shared/registry.d.ts +5 -3
  118. package/dist/nodes/shared/registry.js +356 -31
  119. package/dist/nodes/shared/registry.js.map +1 -1
  120. package/dist/nodes/shared/url.d.ts +1 -1
  121. package/dist/nodes/shared/url.js +20 -9
  122. package/dist/nodes/shared/url.js.map +1 -1
  123. package/dist/package.json +52 -15
  124. package/examples/moon-text-to-video.workflow.json +21 -0
  125. package/examples/saturn-turbo-video.workflow.json +20 -0
  126. package/package.json +52 -15
@@ -18,9 +18,92 @@ const VOLNA_OUTPUT = 'volna-result';
18
18
  function endpoint(definition) {
19
19
  return definition;
20
20
  }
21
+ function jobsEndpoint(module, operation, method, path, requestShape, options = {}) {
22
+ var _a, _b, _c;
23
+ return endpoint({
24
+ endpointId: `${module}.${operation}`,
25
+ module,
26
+ operation,
27
+ routeFamily: 'franklab-partner-jobs',
28
+ method,
29
+ path,
30
+ authHeader: 'Authorization',
31
+ guard: (_a = options.guard) !== null && _a !== void 0 ? _a : 'PartnerSessionOrApiKeyGuard',
32
+ requestShape,
33
+ responseEnvelope: 'successData',
34
+ statusPath: 'data.status',
35
+ terminalStatuses: exports.TERMINAL_STATUSES,
36
+ outputExtractor: (_b = options.outputExtractor) !== null && _b !== void 0 ? _b : JOB_OUTPUT,
37
+ costFields: (_c = options.costFields) !== null && _c !== void 0 ? _c : COST_FIELDS,
38
+ redactionFields: BEARER_REDACTION,
39
+ bodyTransform: options.bodyTransform,
40
+ });
41
+ }
42
+ function integrationListEndpoint(module, operation, path, requestShape) {
43
+ return endpoint({
44
+ endpointId: `${module}.${operation}`,
45
+ module,
46
+ operation,
47
+ routeFamily: 'franklab-text-sticker-integrations',
48
+ method: 'GET',
49
+ path,
50
+ authHeader: 'Authorization',
51
+ guard: 'PartnerSessionOrApiKeyGuard',
52
+ requestShape,
53
+ responseEnvelope: 'successData',
54
+ statusPath: 'data.status',
55
+ terminalStatuses: exports.TERMINAL_STATUSES,
56
+ outputExtractor: LIST_OUTPUT,
57
+ costFields: [],
58
+ redactionFields: BEARER_REDACTION,
59
+ });
60
+ }
61
+ function proxyV1Endpoint(module, routeFamily, operation, method, path, requestShape, options = {}) {
62
+ var _a, _b, _c;
63
+ return endpoint({
64
+ endpointId: `${module}.${operation}`,
65
+ module,
66
+ operation,
67
+ routeFamily,
68
+ method,
69
+ path,
70
+ authHeader: 'X-API-Key',
71
+ guard: (_a = options.guard) !== null && _a !== void 0 ? _a : 'ApiKeyGuard',
72
+ requestShape,
73
+ responseEnvelope: 'codeData',
74
+ statusPath: 'data.status',
75
+ terminalStatuses: exports.TERMINAL_STATUSES,
76
+ outputExtractor: (_b = options.outputExtractor) !== null && _b !== void 0 ? _b : JOB_OUTPUT,
77
+ costFields: (_c = options.costFields) !== null && _c !== void 0 ? _c : COST_FIELDS,
78
+ redactionFields: API_KEY_REDACTION,
79
+ queryFields: options.queryFields,
80
+ });
81
+ }
82
+ function makeCapabilityEndpoint(module, routeFamily, operation, method, path, requestShape, options = {}) {
83
+ var _a, _b, _c;
84
+ return endpoint({
85
+ endpointId: `${module}.${operation}`,
86
+ module,
87
+ operation,
88
+ routeFamily,
89
+ method,
90
+ path,
91
+ authHeader: 'X-API-Key',
92
+ guard: (_a = options.guard) !== null && _a !== void 0 ? _a : 'ApiKeyGuard',
93
+ requestShape,
94
+ responseEnvelope: 'codeData',
95
+ statusPath: 'data.status',
96
+ terminalStatuses: exports.TERMINAL_STATUSES,
97
+ outputExtractor: (_b = options.outputExtractor) !== null && _b !== void 0 ? _b : JOB_OUTPUT,
98
+ costFields: (_c = options.costFields) !== null && _c !== void 0 ? _c : COST_FIELDS,
99
+ redactionFields: API_KEY_REDACTION,
100
+ bodyTransform: options.bodyTransform,
101
+ queryFields: options.queryFields,
102
+ });
103
+ }
21
104
  exports.ENDPOINT_REGISTRY = {
22
105
  'holst.submitImage': endpoint({
23
- key: 'holst.submitImage',
106
+ endpointId: 'holst.submitImage',
24
107
  module: 'holst',
25
108
  operation: 'submitImage',
26
109
  routeFamily: 'franklab-partner-jobs',
@@ -37,7 +120,7 @@ exports.ENDPOINT_REGISTRY = {
37
120
  redactionFields: BEARER_REDACTION,
38
121
  }),
39
122
  'holst.getStatus': endpoint({
40
- key: 'holst.getStatus',
123
+ endpointId: 'holst.getStatus',
41
124
  module: 'holst',
42
125
  operation: 'getStatus',
43
126
  routeFamily: 'franklab-partner-jobs',
@@ -54,7 +137,7 @@ exports.ENDPOINT_REGISTRY = {
54
137
  redactionFields: BEARER_REDACTION,
55
138
  }),
56
139
  'kley.montage': endpoint({
57
- key: 'kley.montage',
140
+ endpointId: 'kley.montage',
58
141
  module: 'kley',
59
142
  operation: 'montage',
60
143
  routeFamily: 'franklab-partner-jobs',
@@ -71,7 +154,7 @@ exports.ENDPOINT_REGISTRY = {
71
154
  redactionFields: BEARER_REDACTION,
72
155
  }),
73
156
  'kley.videoSpeed': endpoint({
74
- key: 'kley.videoSpeed',
157
+ endpointId: 'kley.videoSpeed',
75
158
  module: 'kley',
76
159
  operation: 'videoSpeed',
77
160
  routeFamily: 'franklab-partner-jobs',
@@ -88,7 +171,7 @@ exports.ENDPOINT_REGISTRY = {
88
171
  redactionFields: BEARER_REDACTION,
89
172
  }),
90
173
  'kley.subtitles': endpoint({
91
- key: 'kley.subtitles',
174
+ endpointId: 'kley.subtitles',
92
175
  module: 'kley',
93
176
  operation: 'subtitles',
94
177
  routeFamily: 'franklab-partner-jobs',
@@ -105,7 +188,7 @@ exports.ENDPOINT_REGISTRY = {
105
188
  redactionFields: BEARER_REDACTION,
106
189
  }),
107
190
  'kley.overlay': endpoint({
108
- key: 'kley.overlay',
191
+ endpointId: 'kley.overlay',
109
192
  module: 'kley',
110
193
  operation: 'overlay',
111
194
  routeFamily: 'franklab-partner-jobs',
@@ -122,7 +205,7 @@ exports.ENDPOINT_REGISTRY = {
122
205
  redactionFields: BEARER_REDACTION,
123
206
  }),
124
207
  'kley.getStatus': endpoint({
125
- key: 'kley.getStatus',
208
+ endpointId: 'kley.getStatus',
126
209
  module: 'kley',
127
210
  operation: 'getStatus',
128
211
  routeFamily: 'franklab-partner-jobs',
@@ -139,7 +222,7 @@ exports.ENDPOINT_REGISTRY = {
139
222
  redactionFields: BEARER_REDACTION,
140
223
  }),
141
224
  'plastinka.processAudio': endpoint({
142
- key: 'plastinka.processAudio',
225
+ endpointId: 'plastinka.processAudio',
143
226
  module: 'plastinka',
144
227
  operation: 'processAudio',
145
228
  routeFamily: 'franklab-partner-jobs',
@@ -156,7 +239,7 @@ exports.ENDPOINT_REGISTRY = {
156
239
  redactionFields: BEARER_REDACTION,
157
240
  }),
158
241
  'plastinka.saveSample': endpoint({
159
- key: 'plastinka.saveSample',
242
+ endpointId: 'plastinka.saveSample',
160
243
  module: 'plastinka',
161
244
  operation: 'saveSample',
162
245
  routeFamily: 'franklab-audio-samples',
@@ -173,7 +256,7 @@ exports.ENDPOINT_REGISTRY = {
173
256
  redactionFields: BEARER_REDACTION,
174
257
  }),
175
258
  'plastinka.listSamples': endpoint({
176
- key: 'plastinka.listSamples',
259
+ endpointId: 'plastinka.listSamples',
177
260
  module: 'plastinka',
178
261
  operation: 'listSamples',
179
262
  routeFamily: 'franklab-audio-samples',
@@ -190,7 +273,7 @@ exports.ENDPOINT_REGISTRY = {
190
273
  redactionFields: BEARER_REDACTION,
191
274
  }),
192
275
  'plastinka.getStatus': endpoint({
193
- key: 'plastinka.getStatus',
276
+ endpointId: 'plastinka.getStatus',
194
277
  module: 'plastinka',
195
278
  operation: 'getStatus',
196
279
  routeFamily: 'franklab-partner-jobs',
@@ -207,7 +290,7 @@ exports.ENDPOINT_REGISTRY = {
207
290
  redactionFields: BEARER_REDACTION,
208
291
  }),
209
292
  'volna.textToSpeech': endpoint({
210
- key: 'volna.textToSpeech',
293
+ endpointId: 'volna.textToSpeech',
211
294
  module: 'volna',
212
295
  operation: 'textToSpeech',
213
296
  routeFamily: 'franklab-volna',
@@ -224,7 +307,7 @@ exports.ENDPOINT_REGISTRY = {
224
307
  redactionFields: API_KEY_REDACTION,
225
308
  }),
226
309
  'volna.textToDialogue': endpoint({
227
- key: 'volna.textToDialogue',
310
+ endpointId: 'volna.textToDialogue',
228
311
  module: 'volna',
229
312
  operation: 'textToDialogue',
230
313
  routeFamily: 'franklab-volna',
@@ -241,7 +324,7 @@ exports.ENDPOINT_REGISTRY = {
241
324
  redactionFields: API_KEY_REDACTION,
242
325
  }),
243
326
  'volna.textToSpeechTurbo': endpoint({
244
- key: 'volna.textToSpeechTurbo',
327
+ endpointId: 'volna.textToSpeechTurbo',
245
328
  module: 'volna',
246
329
  operation: 'textToSpeechTurbo',
247
330
  routeFamily: 'franklab-volna',
@@ -258,7 +341,7 @@ exports.ENDPOINT_REGISTRY = {
258
341
  redactionFields: API_KEY_REDACTION,
259
342
  }),
260
343
  'volna.googleTts': endpoint({
261
- key: 'volna.googleTts',
344
+ endpointId: 'volna.googleTts',
262
345
  module: 'volna',
263
346
  operation: 'googleTts',
264
347
  routeFamily: 'franklab-volna',
@@ -275,7 +358,7 @@ exports.ENDPOINT_REGISTRY = {
275
358
  redactionFields: API_KEY_REDACTION,
276
359
  }),
277
360
  'volna.transcribe': endpoint({
278
- key: 'volna.transcribe',
361
+ endpointId: 'volna.transcribe',
279
362
  module: 'volna',
280
363
  operation: 'transcribe',
281
364
  routeFamily: 'franklab-volna',
@@ -292,7 +375,7 @@ exports.ENDPOINT_REGISTRY = {
292
375
  redactionFields: API_KEY_REDACTION,
293
376
  }),
294
377
  'volna.soundEffect': endpoint({
295
- key: 'volna.soundEffect',
378
+ endpointId: 'volna.soundEffect',
296
379
  module: 'volna',
297
380
  operation: 'soundEffect',
298
381
  routeFamily: 'franklab-volna',
@@ -309,7 +392,7 @@ exports.ENDPOINT_REGISTRY = {
309
392
  redactionFields: API_KEY_REDACTION,
310
393
  }),
311
394
  'volna.audioIsolation': endpoint({
312
- key: 'volna.audioIsolation',
395
+ endpointId: 'volna.audioIsolation',
313
396
  module: 'volna',
314
397
  operation: 'audioIsolation',
315
398
  routeFamily: 'franklab-volna',
@@ -326,7 +409,7 @@ exports.ENDPOINT_REGISTRY = {
326
409
  redactionFields: API_KEY_REDACTION,
327
410
  }),
328
411
  'volna.voiceClone': endpoint({
329
- key: 'volna.voiceClone',
412
+ endpointId: 'volna.voiceClone',
330
413
  module: 'volna',
331
414
  operation: 'voiceClone',
332
415
  routeFamily: 'franklab-volna',
@@ -343,7 +426,7 @@ exports.ENDPOINT_REGISTRY = {
343
426
  redactionFields: API_KEY_REDACTION,
344
427
  }),
345
428
  'volna.voiceDesign': endpoint({
346
- key: 'volna.voiceDesign',
429
+ endpointId: 'volna.voiceDesign',
347
430
  module: 'volna',
348
431
  operation: 'voiceDesign',
349
432
  routeFamily: 'franklab-volna',
@@ -360,7 +443,7 @@ exports.ENDPOINT_REGISTRY = {
360
443
  redactionFields: API_KEY_REDACTION,
361
444
  }),
362
445
  'volna.voiceDesignSave': endpoint({
363
- key: 'volna.voiceDesignSave',
446
+ endpointId: 'volna.voiceDesignSave',
364
447
  module: 'volna',
365
448
  operation: 'voiceDesignSave',
366
449
  routeFamily: 'franklab-volna',
@@ -377,7 +460,7 @@ exports.ENDPOINT_REGISTRY = {
377
460
  redactionFields: API_KEY_REDACTION,
378
461
  }),
379
462
  'volna.dubbing': endpoint({
380
- key: 'volna.dubbing',
463
+ endpointId: 'volna.dubbing',
381
464
  module: 'volna',
382
465
  operation: 'dubbing',
383
466
  routeFamily: 'franklab-volna',
@@ -394,7 +477,7 @@ exports.ENDPOINT_REGISTRY = {
394
477
  redactionFields: API_KEY_REDACTION,
395
478
  }),
396
479
  'volna.listVoices': endpoint({
397
- key: 'volna.listVoices',
480
+ endpointId: 'volna.listVoices',
398
481
  module: 'volna',
399
482
  operation: 'listVoices',
400
483
  routeFamily: 'franklab-volna',
@@ -411,7 +494,7 @@ exports.ENDPOINT_REGISTRY = {
411
494
  redactionFields: API_KEY_REDACTION,
412
495
  }),
413
496
  'volna.listModels': endpoint({
414
- key: 'volna.listModels',
497
+ endpointId: 'volna.listModels',
415
498
  module: 'volna',
416
499
  operation: 'listModels',
417
500
  routeFamily: 'franklab-volna',
@@ -428,7 +511,7 @@ exports.ENDPOINT_REGISTRY = {
428
511
  redactionFields: API_KEY_REDACTION,
429
512
  }),
430
513
  'volna.usage': endpoint({
431
- key: 'volna.usage',
514
+ endpointId: 'volna.usage',
432
515
  module: 'volna',
433
516
  operation: 'usage',
434
517
  routeFamily: 'franklab-volna',
@@ -445,7 +528,7 @@ exports.ENDPOINT_REGISTRY = {
445
528
  redactionFields: API_KEY_REDACTION,
446
529
  }),
447
530
  'volna.getTask': endpoint({
448
- key: 'volna.getTask',
531
+ endpointId: 'volna.getTask',
449
532
  module: 'volna',
450
533
  operation: 'getTask',
451
534
  routeFamily: 'franklab-volna',
@@ -462,7 +545,7 @@ exports.ENDPOINT_REGISTRY = {
462
545
  redactionFields: API_KEY_REDACTION,
463
546
  }),
464
547
  'volna.getDubbing': endpoint({
465
- key: 'volna.getDubbing',
548
+ endpointId: 'volna.getDubbing',
466
549
  module: 'volna',
467
550
  operation: 'getDubbing',
468
551
  routeFamily: 'franklab-volna',
@@ -479,7 +562,7 @@ exports.ENDPOINT_REGISTRY = {
479
562
  redactionFields: API_KEY_REDACTION,
480
563
  }),
481
564
  'c2pa.listProfiles': endpoint({
482
- key: 'c2pa.listProfiles',
565
+ endpointId: 'c2pa.listProfiles',
483
566
  module: 'c2pa',
484
567
  operation: 'listProfiles',
485
568
  routeFamily: 'franklab-c2pa-signer-profiles',
@@ -496,7 +579,7 @@ exports.ENDPOINT_REGISTRY = {
496
579
  redactionFields: BEARER_REDACTION,
497
580
  }),
498
581
  'c2pa.profileOptions': endpoint({
499
- key: 'c2pa.profileOptions',
582
+ endpointId: 'c2pa.profileOptions',
500
583
  module: 'c2pa',
501
584
  operation: 'profileOptions',
502
585
  routeFamily: 'franklab-c2pa-signer-profiles',
@@ -513,7 +596,7 @@ exports.ENDPOINT_REGISTRY = {
513
596
  redactionFields: BEARER_REDACTION,
514
597
  }),
515
598
  'c2pa.generateSelfSigned': endpoint({
516
- key: 'c2pa.generateSelfSigned',
599
+ endpointId: 'c2pa.generateSelfSigned',
517
600
  module: 'c2pa',
518
601
  operation: 'generateSelfSigned',
519
602
  routeFamily: 'franklab-c2pa-signer-profiles',
@@ -530,7 +613,7 @@ exports.ENDPOINT_REGISTRY = {
530
613
  redactionFields: BEARER_REDACTION,
531
614
  }),
532
615
  'c2pa.revokeProfile': endpoint({
533
- key: 'c2pa.revokeProfile',
616
+ endpointId: 'c2pa.revokeProfile',
534
617
  module: 'c2pa',
535
618
  operation: 'revokeProfile',
536
619
  routeFamily: 'franklab-c2pa-signer-profiles',
@@ -546,6 +629,146 @@ exports.ENDPOINT_REGISTRY = {
546
629
  costFields: [],
547
630
  redactionFields: BEARER_REDACTION,
548
631
  }),
632
+ 'sufler.subtitles': jobsEndpoint('sufler', 'subtitles', 'POST', '/franklab/jobs/subtitles', 'videoUrl plus caption engine and styling fields'),
633
+ 'sufler.getStatus': jobsEndpoint('sufler', 'getStatus', 'GET', '/franklab/jobs/:jobId', 'jobId path parameter'),
634
+ 'textSticker.overlay': jobsEndpoint('textSticker', 'overlay', 'POST', '/franklab/jobs/overlay', 'videoUrl plus overlay payload'),
635
+ 'textSticker.getStatus': jobsEndpoint('textSticker', 'getStatus', 'GET', '/franklab/jobs/:jobId', 'jobId path parameter'),
636
+ 'textSticker.listFonts': integrationListEndpoint('textSticker', 'listFonts', '/franklab/integrations/text-sticker/fonts', 'none'),
637
+ 'textSticker.listStickers': integrationListEndpoint('textSticker', 'listStickers', '/franklab/integrations/text-sticker/stickers', 'none'),
638
+ 'textSticker.listEmojis': integrationListEndpoint('textSticker', 'listEmojis', '/franklab/integrations/text-sticker/emojis', 'none'),
639
+ 'textSticker.listSubtitleTemplates': integrationListEndpoint('textSticker', 'listSubtitleTemplates', '/franklab/integrations/text-sticker/subtitle-templates', 'none'),
640
+ 'textSticker.listVideoEffects': integrationListEndpoint('textSticker', 'listVideoEffects', '/franklab/integrations/text-sticker/video-effects', 'none'),
641
+ 'textSticker.listTransitions': integrationListEndpoint('textSticker', 'listTransitions', '/franklab/integrations/text-sticker/transitions', 'none'),
642
+ 'textSticker.listTransitionSounds': integrationListEndpoint('textSticker', 'listTransitionSounds', '/franklab/integrations/text-sticker/transition-sounds', 'none'),
643
+ 'textSticker.listSafeZoneOptions': integrationListEndpoint('textSticker', 'listSafeZoneOptions', '/franklab/integrations/text-sticker/safe-zone-options', 'none'),
644
+ 'textSticker.listAspectRatios': integrationListEndpoint('textSticker', 'listAspectRatios', '/franklab/integrations/text-sticker/aspect-ratios', 'none'),
645
+ 'textSticker.listResizePresets': integrationListEndpoint('textSticker', 'listResizePresets', '/franklab/integrations/text-sticker/resize-presets', 'none'),
646
+ 'orkestr.music': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v1', 'music', 'POST', '/make/orkestr/music', 'Suno operation and payload envelope', { bodyTransform: 'wrapOperationPayload' }),
647
+ 'orkestr.lyrics': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v1', 'lyrics', 'POST', '/make/orkestr/lyrics', 'Suno operation and payload envelope', { bodyTransform: 'wrapOperationPayload' }),
648
+ 'orkestr.style': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v1', 'style', 'POST', '/make/orkestr/style', 'style payload envelope', { bodyTransform: 'wrapOperationPayload' }),
649
+ 'orkestr.persona': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v1', 'persona', 'POST', '/make/orkestr/persona', 'persona payload envelope', { bodyTransform: 'wrapOperationPayload' }),
650
+ 'orkestr.processing': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v1', 'processing', 'POST', '/make/orkestr/processing', 'Suno processing operation and payload envelope', { bodyTransform: 'wrapOperationPayload' }),
651
+ 'orkestr.visuals': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v1', 'visuals', 'POST', '/make/orkestr/visuals', 'Suno visuals operation and payload envelope', { bodyTransform: 'wrapOperationPayload' }),
652
+ 'orkestr.getTaskV1': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v1', 'getTaskV1', 'GET', '/make/orkestr/status/:pollKind/:taskId', 'pollKind and taskId path parameters'),
653
+ 'orkestr.generate': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'generate', 'POST', '/make/orkestr/v2/generate', 'music generation payload', { guard: 'OrkestrV2ApiKeyGuard' }),
654
+ 'orkestr.extend': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'extend', 'POST', '/make/orkestr/v2/extend', 'track extend payload', { guard: 'OrkestrV2ApiKeyGuard' }),
655
+ 'orkestr.uploadCover': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'uploadCover', 'POST', '/make/orkestr/v2/upload-cover', 'cover upload payload', { guard: 'OrkestrV2ApiKeyGuard' }),
656
+ 'orkestr.uploadExtend': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'uploadExtend', 'POST', '/make/orkestr/v2/upload-extend', 'extend upload payload', { guard: 'OrkestrV2ApiKeyGuard' }),
657
+ 'orkestr.addInstrumental': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'addInstrumental', 'POST', '/make/orkestr/v2/add-instrumental', 'add instrumental payload', { guard: 'OrkestrV2ApiKeyGuard' }),
658
+ 'orkestr.addVocals': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'addVocals', 'POST', '/make/orkestr/v2/add-vocals', 'add vocals payload', { guard: 'OrkestrV2ApiKeyGuard' }),
659
+ 'orkestr.replaceSection': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'replaceSection', 'POST', '/make/orkestr/v2/replace-section', 'replace section payload', { guard: 'OrkestrV2ApiKeyGuard' }),
660
+ 'orkestr.mashup': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'mashup', 'POST', '/make/orkestr/v2/mashup', 'mashup payload', { guard: 'OrkestrV2ApiKeyGuard' }),
661
+ 'orkestr.lyricsV2': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'lyricsV2', 'POST', '/make/orkestr/v2/lyrics', 'lyrics generation payload', { guard: 'OrkestrV2ApiKeyGuard' }),
662
+ 'orkestr.timestampedLyrics': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'timestampedLyrics', 'POST', '/make/orkestr/v2/timestamped-lyrics', 'timestamped lyrics payload', { guard: 'OrkestrV2ApiKeyGuard' }),
663
+ 'orkestr.separateVocals': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'separateVocals', 'POST', '/make/orkestr/v2/separate-vocals', 'vocal separation payload', { guard: 'OrkestrV2ApiKeyGuard' }),
664
+ 'orkestr.generateMidi': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'generateMidi', 'POST', '/make/orkestr/v2/generate-midi', 'MIDI generation payload', { guard: 'OrkestrV2ApiKeyGuard' }),
665
+ 'orkestr.convertWav': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'convertWav', 'POST', '/make/orkestr/v2/convert-wav', 'WAV conversion payload', { guard: 'OrkestrV2ApiKeyGuard' }),
666
+ 'orkestr.musicVideo': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'musicVideo', 'POST', '/make/orkestr/v2/music-video', 'music video payload', { guard: 'OrkestrV2ApiKeyGuard' }),
667
+ 'orkestr.coverImage': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'coverImage', 'POST', '/make/orkestr/v2/cover-image', 'cover image payload', { guard: 'OrkestrV2ApiKeyGuard' }),
668
+ 'orkestr.boostStyle': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'boostStyle', 'POST', '/make/orkestr/v2/boost-style', 'boost style payload', { guard: 'OrkestrV2ApiKeyGuard' }),
669
+ 'orkestr.generatePersona': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'generatePersona', 'POST', '/make/orkestr/v2/generate-persona', 'persona generation payload', { guard: 'OrkestrV2ApiKeyGuard' }),
670
+ 'orkestr.lyriaMusic': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'lyriaMusic', 'POST', '/make/orkestr/v2/lyria-music', 'Google Lyria music payload', { guard: 'OrkestrV2ApiKeyGuard' }),
671
+ 'orkestr.getTaskV2': makeCapabilityEndpoint('orkestr', 'franklab-orkestr-v2', 'getTaskV2', 'GET', '/make/orkestr/v2/tasks/:taskId', 'taskId path parameter', { guard: 'OrkestrV2ApiKeyGuard' }),
672
+ 'jupiter.omniImage': proxyV1Endpoint('jupiter', 'franklab-jupiter', 'omniImage', 'POST', '/v1/images/omni-image', 'image generation payload'),
673
+ 'jupiter.seedreamImage': proxyV1Endpoint('jupiter', 'franklab-jupiter', 'seedreamImage', 'POST', '/v1/images/seedream-image', 'seedream image payload'),
674
+ 'jupiter.getOmniStatus': proxyV1Endpoint('jupiter', 'franklab-jupiter', 'getOmniStatus', 'GET', '/v1/images/omni-image/:taskId', 'taskId path parameter'),
675
+ 'jupiter.getSeedreamStatus': proxyV1Endpoint('jupiter', 'franklab-jupiter', 'getSeedreamStatus', 'GET', '/v1/images/seedream-image/:taskId', 'taskId path parameter'),
676
+ 'jupiter.recraftImage': proxyV1Endpoint('jupiter', 'franklab-jupiter', 'recraftImage', 'POST', '/v1/recraft/create-task', 'Recraft task payload'),
677
+ 'jupiter.getRecraftStatus': proxyV1Endpoint('jupiter', 'franklab-jupiter', 'getRecraftStatus', 'GET', '/v1/recraft/record-info', 'taskId query parameter', { queryFields: ['taskId'] }),
678
+ 'mars.textToVideo': proxyV1Endpoint('mars', 'franklab-mars', 'textToVideo', 'POST', '/v1/videos/text2video', 'text-to-video payload'),
679
+ 'mars.imageToVideo': proxyV1Endpoint('mars', 'franklab-mars', 'imageToVideo', 'POST', '/v1/videos/image2video', 'image-to-video payload'),
680
+ 'mars.effects': proxyV1Endpoint('mars', 'franklab-mars', 'effects', 'POST', '/v1/videos/effects', 'video effects payload'),
681
+ 'mars.motionControl': proxyV1Endpoint('mars', 'franklab-mars', 'motionControl', 'POST', '/v1/videos/motion-control', 'motion control payload'),
682
+ 'mars.getTextStatus': proxyV1Endpoint('mars', 'franklab-mars', 'getTextStatus', 'GET', '/v1/videos/text2video/:taskId', 'taskId path parameter'),
683
+ 'mars.getImageStatus': proxyV1Endpoint('mars', 'franklab-mars', 'getImageStatus', 'GET', '/v1/videos/image2video/:taskId', 'taskId path parameter'),
684
+ 'mars.getEffectsStatus': proxyV1Endpoint('mars', 'franklab-mars', 'getEffectsStatus', 'GET', '/v1/videos/effects/:taskId', 'taskId path parameter'),
685
+ 'mars.getMotionStatus': proxyV1Endpoint('mars', 'franklab-mars', 'getMotionStatus', 'GET', '/v1/videos/motion-control/:taskId', 'taskId path parameter'),
686
+ 'saturn.video': proxyV1Endpoint('saturn', 'franklab-saturn', 'video', 'POST', '/v1/videos/saturn', 'SATURN video payload'),
687
+ 'saturn.turboTextToVideo': proxyV1Endpoint('saturn', 'franklab-saturn', 'turboTextToVideo', 'POST', '/v1/videos/saturn-turbo/text-to-video', 'SATURN Turbo text-to-video payload'),
688
+ 'saturn.turboImageToVideo': proxyV1Endpoint('saturn', 'franklab-saturn', 'turboImageToVideo', 'POST', '/v1/videos/saturn-turbo/image-to-video', 'SATURN Turbo image-to-video payload'),
689
+ 'saturn.getVideoStatus': proxyV1Endpoint('saturn', 'franklab-saturn', 'getVideoStatus', 'GET', '/v1/videos/saturn/:taskId', 'taskId path parameter'),
690
+ 'saturn.getTurboStatus': proxyV1Endpoint('saturn', 'franklab-saturn', 'getTurboStatus', 'GET', '/v1/videos/saturn-turbo/:taskId', 'taskId path parameter'),
691
+ 'moon.createVideo': makeCapabilityEndpoint('moon', 'franklab-moon', 'createVideo', 'POST', '/make/moon/videos', 'Moon video task payload'),
692
+ 'moon.estimate': makeCapabilityEndpoint('moon', 'franklab-moon', 'estimate', 'POST', '/make/moon/estimate', 'estimate-only payload, returns estimated cost without submitting'),
693
+ 'moon.getStatus': makeCapabilityEndpoint('moon', 'franklab-moon', 'getStatus', 'GET', '/make/moon/status/:taskId', 'taskId path parameter'),
694
+ 'venus.avatarVideo': proxyV1Endpoint('venus', 'franklab-venus', 'avatarVideo', 'POST', '/v1/videos/avatar/image2video', 'avatar image and sound payload'),
695
+ 'venus.getStatus': proxyV1Endpoint('venus', 'franklab-venus', 'getStatus', 'GET', '/v1/videos/avatar/image2video/:taskId', 'taskId path parameter'),
696
+ 'x.imagineVideo': proxyV1Endpoint('x', 'franklab-x', 'imagineVideo', 'POST', '/v1/videos/xai', 'xAI Imagine video payload'),
697
+ 'x.imagineImage': proxyV1Endpoint('x', 'franklab-x', 'imagineImage', 'POST', '/v1/images/xai-imagine', 'xAI Imagine image payload'),
698
+ 'x.getVideoStatus': proxyV1Endpoint('x', 'franklab-x', 'getVideoStatus', 'GET', '/v1/videos/xai/:taskId', 'taskId path parameter'),
699
+ 'x.getImageStatus': proxyV1Endpoint('x', 'franklab-x', 'getImageStatus', 'GET', '/v1/images/xai-imagine/:taskId', 'taskId path parameter'),
700
+ 'minimax.createVideo': makeCapabilityEndpoint('minimax', 'franklab-minimax', 'createVideo', 'POST', '/make/minimax/videos', 'MiniMax H3 video payload with idempotency key', { guard: 'ApiKeyGuard + partner throttlers' }),
701
+ 'minimax.getTask': makeCapabilityEndpoint('minimax', 'franklab-minimax', 'getTask', 'GET', '/make/minimax/videos/:taskId', 'taskId path parameter', { guard: 'ApiKeyGuard + partner throttlers' }),
702
+ 'minimax.listVideos': makeCapabilityEndpoint('minimax', 'franklab-minimax', 'listVideos', 'GET', '/make/minimax/videos', 'optional page_num and page_size query parameters', { guard: 'ApiKeyGuard + partner throttlers', outputExtractor: LIST_OUTPUT, costFields: [], queryFields: ['page_num', 'page_size'] }),
703
+ 'minimax.taskAction': makeCapabilityEndpoint('minimax', 'franklab-minimax', 'taskAction', 'POST', '/make/minimax/videos/:taskId/action', 'taskId path parameter and action body', { guard: 'ApiKeyGuard + partner throttlers', costFields: [] }),
704
+ 'minimax.idempotencyKey': makeCapabilityEndpoint('minimax', 'franklab-minimax', 'idempotencyKey', 'POST', '/make/minimax/idempotency-key', 'none', { guard: 'ApiKeyGuard + partner throttlers', outputExtractor: PROFILE_OUTPUT, costFields: [] }),
705
+ 'dola.generate': makeCapabilityEndpoint('dola', 'franklab-dola', 'generate', 'POST', '/make/dola/generate', 'LLM prompt payload', { guard: 'DolaApiKeyGuard' }),
706
+ 'dola.listModels': makeCapabilityEndpoint('dola', 'franklab-dola', 'listModels', 'GET', '/make/dola/models', 'none', { guard: 'DolaApiKeyGuard', outputExtractor: LIST_OUTPUT, costFields: [] }),
707
+ 'dola.fileFromUrl': makeCapabilityEndpoint('dola', 'franklab-dola', 'fileFromUrl', 'POST', '/make/dola/files/from-url', 'public file URL payload', { guard: 'DolaApiKeyGuard', outputExtractor: PROFILE_OUTPUT, costFields: [] }),
708
+ 'dola.listFiles': makeCapabilityEndpoint('dola', 'franklab-dola', 'listFiles', 'GET', '/make/dola/files', 'none', { guard: 'DolaApiKeyGuard', outputExtractor: LIST_OUTPUT, costFields: [] }),
709
+ 'dola.getFile': makeCapabilityEndpoint('dola', 'franklab-dola', 'getFile', 'GET', '/make/dola/files/:file_id', 'file_id path parameter', { guard: 'DolaApiKeyGuard', outputExtractor: PROFILE_OUTPUT, costFields: [] }),
710
+ 'dola.deleteFile': makeCapabilityEndpoint('dola', 'franklab-dola', 'deleteFile', 'DELETE', '/make/dola/files/:file_id', 'file_id path parameter', { guard: 'DolaApiKeyGuard', outputExtractor: PROFILE_OUTPUT, costFields: [] }),
711
+ 'dola.getTask': makeCapabilityEndpoint('dola', 'franklab-dola', 'getTask', 'GET', '/make/dola/tasks/:billing_task_id', 'billing_task_id path parameter', { guard: 'DolaApiKeyGuard' }),
712
+ 'alibaba.generateImage': makeCapabilityEndpoint('alibaba', 'franklab-alibaba', 'generateImage', 'POST', '/make/alibaba/images', 'Z-Image generation payload'),
713
+ 'alibaba.generateVideo': makeCapabilityEndpoint('alibaba', 'franklab-alibaba', 'generateVideo', 'POST', '/make/alibaba/videos', 'HappyHorse video payload'),
714
+ 'alibaba.estimate': makeCapabilityEndpoint('alibaba', 'franklab-alibaba', 'estimate', 'POST', '/make/alibaba/estimate', 'estimate-only payload, returns estimated cost without submitting', { costFields: [] }),
715
+ 'alibaba.getStatus': makeCapabilityEndpoint('alibaba', 'franklab-alibaba', 'getStatus', 'GET', '/make/alibaba/status/:taskId', 'taskId path parameter'),
716
+ 'omni.info': makeCapabilityEndpoint('omni', 'franklab-omni', 'info', 'GET', '/make/omni', 'none', { outputExtractor: PROFILE_OUTPUT, costFields: [] }),
717
+ 'omni.createVideo': makeCapabilityEndpoint('omni', 'franklab-omni', 'createVideo', 'POST', '/make/omni/videos', 'Google Omni/Veo video payload'),
718
+ 'omni.getStatus': makeCapabilityEndpoint('omni', 'franklab-omni', 'getStatus', 'GET', '/make/omni/status/:taskId', 'taskId path parameter'),
719
+ 'omni.videoOmni': proxyV1Endpoint('omni', 'franklab-omni', 'videoOmni', 'POST', '/v1/videos/omni-video', 'Google omni video payload'),
720
+ 'omni.getVideoOmniStatus': proxyV1Endpoint('omni', 'franklab-omni', 'getVideoOmniStatus', 'GET', '/v1/videos/omni-video/:taskId', 'taskId path parameter'),
721
+ 'omni.googleSubVideo': proxyV1Endpoint('omni', 'franklab-omni', 'googleSubVideo', 'POST', '/v1/videos/google-sub', 'Google subscription video payload'),
722
+ 'omni.getGoogleSubVideoStatus': proxyV1Endpoint('omni', 'franklab-omni', 'getGoogleSubVideoStatus', 'GET', '/v1/videos/google-sub/:taskId', 'taskId path parameter'),
723
+ 'omni.googleSubImage': proxyV1Endpoint('omni', 'franklab-omni', 'googleSubImage', 'POST', '/v1/images/google-sub', 'Google subscription image payload'),
724
+ 'omni.getGoogleSubImageStatus': proxyV1Endpoint('omni', 'franklab-omni', 'getGoogleSubImageStatus', 'GET', '/v1/images/google-sub/:taskId', 'taskId path parameter'),
725
+ 'kusok.createElement': makeCapabilityEndpoint('kusok', 'franklab-kusok', 'createElement', 'POST', '/make/kusok/elements', 'element creation payload', { guard: 'KusokApiKeyGuard' }),
726
+ 'kusok.listElements': makeCapabilityEndpoint('kusok', 'franklab-kusok', 'listElements', 'GET', '/make/kusok/elements', 'optional pageNum and pageSize query parameters', { guard: 'KusokApiKeyGuard', outputExtractor: LIST_OUTPUT, costFields: [], queryFields: ['pageNum', 'pageSize'] }),
727
+ 'kusok.getElement': makeCapabilityEndpoint('kusok', 'franklab-kusok', 'getElement', 'GET', '/make/kusok/elements/:id', 'id path parameter', { guard: 'KusokApiKeyGuard', outputExtractor: PROFILE_OUTPUT, costFields: [] }),
728
+ 'kusok.deleteElement': makeCapabilityEndpoint('kusok', 'franklab-kusok', 'deleteElement', 'POST', '/make/kusok/elements/:id/delete', 'id path parameter', { guard: 'KusokApiKeyGuard', outputExtractor: PROFILE_OUTPUT, costFields: [] }),
729
+ 'kusok.recognize': makeCapabilityEndpoint('kusok', 'franklab-kusok', 'recognize', 'POST', '/make/kusok/recognize', 'recognition payload', { guard: 'KusokApiKeyGuard' }),
730
+ 'kusok.createElementAsync': makeCapabilityEndpoint('kusok', 'franklab-kusok', 'createElementAsync', 'POST', '/make/kusok/async/elements', 'async element creation payload', { guard: 'KusokApiKeyGuard' }),
731
+ 'kusok.recognizeAsync': makeCapabilityEndpoint('kusok', 'franklab-kusok', 'recognizeAsync', 'POST', '/make/kusok/async/recognize', 'async recognition payload', { guard: 'KusokApiKeyGuard' }),
732
+ 'kusok.getAsyncTask': makeCapabilityEndpoint('kusok', 'franklab-kusok', 'getAsyncTask', 'GET', '/make/kusok/async/tasks/:taskId', 'taskId path parameter', { guard: 'KusokApiKeyGuard' }),
733
+ 'kusok.getTask': makeCapabilityEndpoint('kusok', 'franklab-kusok', 'getTask', 'GET', '/make/kusok/tasks/:taskId', 'taskId path parameter', { guard: 'KusokApiKeyGuard' }),
734
+ 'kusok.createVoice': makeCapabilityEndpoint('kusok', 'franklab-kusok', 'createVoice', 'POST', '/make/kusok/voices', 'voice creation payload', { guard: 'KusokApiKeyGuard' }),
735
+ 'kusok.listVoices': makeCapabilityEndpoint('kusok', 'franklab-kusok', 'listVoices', 'GET', '/make/kusok/voices', 'optional pageNum and pageSize query parameters', { guard: 'KusokApiKeyGuard', outputExtractor: LIST_OUTPUT, costFields: [], queryFields: ['pageNum', 'pageSize'] }),
736
+ 'kusok.getVoice': makeCapabilityEndpoint('kusok', 'franklab-kusok', 'getVoice', 'GET', '/make/kusok/voices/:voiceId', 'voiceId path parameter', { guard: 'KusokApiKeyGuard', outputExtractor: PROFILE_OUTPUT, costFields: [] }),
737
+ 'kusok.deleteVoice': makeCapabilityEndpoint('kusok', 'franklab-kusok', 'deleteVoice', 'DELETE', '/make/kusok/voices/:voiceId', 'voiceId path parameter', { guard: 'KusokApiKeyGuard', outputExtractor: PROFILE_OUTPUT, costFields: [] }),
738
+ 'kusok.listPresetVoices': makeCapabilityEndpoint('kusok', 'franklab-kusok', 'listPresetVoices', 'GET', '/make/kusok/preset-voices', 'optional pageNum and pageSize query parameters', { guard: 'KusokApiKeyGuard', outputExtractor: LIST_OUTPUT, costFields: [], queryFields: ['pageNum', 'pageSize'] }),
739
+ 'kusok.listTags': proxyV1Endpoint('kusok', 'franklab-kusok-v1', 'listTags', 'GET', '/v1/elements/tags', 'optional pageNum and pageSize query parameters', { outputExtractor: LIST_OUTPUT, costFields: [], queryFields: ['pageNum', 'pageSize'] }),
740
+ 'kusok.listElementVoices': proxyV1Endpoint('kusok', 'franklab-kusok-v1', 'listElementVoices', 'GET', '/v1/elements/voices', 'optional pageNum and pageSize query parameters', { outputExtractor: LIST_OUTPUT, costFields: [], queryFields: ['pageNum', 'pageSize'] }),
741
+ 'kusok.listAdvancedPresets': proxyV1Endpoint('kusok', 'franklab-kusok-v1', 'listAdvancedPresets', 'GET', '/v1/general/advanced-presets-elements', 'optional pageNum and pageSize query parameters', { outputExtractor: LIST_OUTPUT, costFields: [], queryFields: ['pageNum', 'pageSize'] }),
742
+ 'kusok.getAdvancedPreset': proxyV1Endpoint('kusok', 'franklab-kusok-v1', 'getAdvancedPreset', 'GET', '/v1/general/advanced-presets-elements/:id', 'id path parameter', { outputExtractor: PROFILE_OUTPUT, costFields: [] }),
743
+ 'kusok.listCustomVoices': proxyV1Endpoint('kusok', 'franklab-kusok-v1', 'listCustomVoices', 'GET', '/v1/general/custom-voices', 'optional pageNum and pageSize query parameters', { guard: 'KusokApiKeyGuard', outputExtractor: LIST_OUTPUT, costFields: [], queryFields: ['pageNum', 'pageSize'] }),
744
+ 'kusok.createCustomVoice': proxyV1Endpoint('kusok', 'franklab-kusok-v1', 'createCustomVoice', 'POST', '/v1/general/custom-voices', 'custom voice payload', { guard: 'KusokApiKeyGuard' }),
745
+ 'kusok.getCustomVoice': proxyV1Endpoint('kusok', 'franklab-kusok-v1', 'getCustomVoice', 'GET', '/v1/general/custom-voices/:voiceId', 'voiceId path parameter', { guard: 'KusokApiKeyGuard', outputExtractor: PROFILE_OUTPUT, costFields: [] }),
746
+ 'kusok.deleteCustomVoices': proxyV1Endpoint('kusok', 'franklab-kusok-v1', 'deleteCustomVoices', 'POST', '/v1/general/delete-voices', 'voice deletion payload', { guard: 'KusokApiKeyGuard' }),
747
+ 'mercury.lipSync': proxyV1Endpoint('mercury', 'franklab-mercury', 'lipSync', 'POST', '/v1/videos/lip-sync', 'video and audio URL payload'),
748
+ 'mercury.advancedLipSync': proxyV1Endpoint('mercury', 'franklab-mercury', 'advancedLipSync', 'POST', '/v1/videos/advanced-lip-sync', 'advanced lip-sync payload'),
749
+ 'mercury.identifyFace': proxyV1Endpoint('mercury', 'franklab-mercury', 'identifyFace', 'POST', '/v1/videos/Identify-face', 'face identification payload', { costFields: [] }),
750
+ 'mercury.getLipSyncStatus': proxyV1Endpoint('mercury', 'franklab-mercury', 'getLipSyncStatus', 'GET', '/v1/videos/lip-sync/:taskId', 'taskId path parameter'),
751
+ 'mercury.getAdvancedLipSyncStatus': proxyV1Endpoint('mercury', 'franklab-mercury', 'getAdvancedLipSyncStatus', 'GET', '/v1/videos/advanced-lip-sync/:taskId', 'taskId path parameter'),
752
+ 'neptune.textToSpeech': proxyV1Endpoint('neptune', 'franklab-neptune', 'textToSpeech', 'POST', '/v1/audio/tts', 'text and voice payload'),
753
+ 'neptune.getTask': proxyV1Endpoint('neptune', 'franklab-neptune', 'getTask', 'GET', '/v1/audio/tts/:taskId', 'taskId path parameter'),
754
+ 'neptune.listVoices': proxyV1Endpoint('neptune', 'franklab-neptune', 'listVoices', 'GET', '/v1/audio/tts/voices-rpc', 'none', { outputExtractor: LIST_OUTPUT, costFields: [] }),
755
+ 'pluto.textToAudio': proxyV1Endpoint('pluto', 'franklab-pluto', 'textToAudio', 'POST', '/v1/audio/text-to-audio', 'prompt payload'),
756
+ 'pluto.getAudioStatus': proxyV1Endpoint('pluto', 'franklab-pluto', 'getAudioStatus', 'GET', '/v1/audio/text-to-audio/:taskId', 'taskId path parameter'),
757
+ 'pluto.videoToAudio': proxyV1Endpoint('pluto', 'franklab-pluto', 'videoToAudio', 'POST', '/v1/audio/video-to-audio', 'video URL payload'),
758
+ 'pluto.getVideoAudioStatus': proxyV1Endpoint('pluto', 'franklab-pluto', 'getVideoAudioStatus', 'GET', '/v1/audio/video-to-audio/:taskId', 'taskId path parameter'),
759
+ 'aries.getStatus': proxyV1Endpoint('aries', 'franklab-aries', 'getStatus', 'GET', '/v1/images/kolors-virtual-try-on/:taskId', 'taskId path parameter'),
760
+ 'titan.initSelection': proxyV1Endpoint('titan', 'franklab-titan', 'initSelection', 'POST', '/v1/videos/multi-elements/init-selection', 'selection initialization payload', { costFields: [] }),
761
+ 'titan.addSelection': proxyV1Endpoint('titan', 'franklab-titan', 'addSelection', 'POST', '/v1/videos/multi-elements/add-selection', 'selection addition payload', { costFields: [] }),
762
+ 'titan.deleteSelection': proxyV1Endpoint('titan', 'franklab-titan', 'deleteSelection', 'POST', '/v1/videos/multi-elements/delete-selection', 'selection deletion payload', { costFields: [] }),
763
+ 'titan.clearSelection': proxyV1Endpoint('titan', 'franklab-titan', 'clearSelection', 'POST', '/v1/videos/multi-elements/clear-selection', 'selection clearing payload', { costFields: [] }),
764
+ 'titan.previewSelection': proxyV1Endpoint('titan', 'franklab-titan', 'previewSelection', 'POST', '/v1/videos/multi-elements/preview-selection', 'selection preview payload', { costFields: [] }),
765
+ 'titan.createVideo': proxyV1Endpoint('titan', 'franklab-titan', 'createVideo', 'POST', '/v1/videos/multi-elements', 'multi-element video payload'),
766
+ 'titan.getTask': proxyV1Endpoint('titan', 'franklab-titan', 'getTask', 'GET', '/v1/videos/multi-elements/:taskId', 'taskId path parameter'),
767
+ 'titan.listTasks': proxyV1Endpoint('titan', 'franklab-titan', 'listTasks', 'GET', '/v1/videos/multi-elements', 'optional pageNum and pageSize query parameters', { outputExtractor: LIST_OUTPUT, costFields: [], queryFields: ['pageNum', 'pageSize'] }),
768
+ 'hotCoffe.generateImage': makeCapabilityEndpoint('hotCoffe', 'franklab-hot-coffe', 'generateImage', 'POST', '/make/hot-coffe/images', 'image generation payload'),
769
+ 'hotCoffe.getImageStatus': makeCapabilityEndpoint('hotCoffe', 'franklab-hot-coffe', 'getImageStatus', 'GET', '/make/hot-coffe/images/status/:taskId', 'taskId path parameter'),
770
+ 'hotCoffe.createVideo': proxyV1Endpoint('hotCoffe', 'franklab-hot-coffe', 'createVideo', 'POST', '/v1/hot-coffe/videos/tasks', 'seedance video payload'),
771
+ 'hotCoffe.getVideoStatus': proxyV1Endpoint('hotCoffe', 'franklab-hot-coffe', 'getVideoStatus', 'GET', '/v1/hot-coffe/videos/tasks/:taskId', 'taskId path parameter'),
549
772
  };
550
773
  exports.MODULE_OPERATIONS = {
551
774
  holst: ['submitImage', 'getStatus'],
@@ -570,6 +793,108 @@ exports.MODULE_OPERATIONS = {
570
793
  'getDubbing',
571
794
  ],
572
795
  c2pa: ['listProfiles', 'profileOptions', 'generateSelfSigned', 'revokeProfile'],
796
+ sufler: ['subtitles', 'getStatus'],
797
+ textSticker: [
798
+ 'overlay',
799
+ 'getStatus',
800
+ 'listFonts',
801
+ 'listStickers',
802
+ 'listEmojis',
803
+ 'listSubtitleTemplates',
804
+ 'listVideoEffects',
805
+ 'listTransitions',
806
+ 'listTransitionSounds',
807
+ 'listSafeZoneOptions',
808
+ 'listAspectRatios',
809
+ 'listResizePresets',
810
+ ],
811
+ orkestr: [
812
+ 'music',
813
+ 'lyrics',
814
+ 'style',
815
+ 'persona',
816
+ 'processing',
817
+ 'visuals',
818
+ 'getTaskV1',
819
+ 'generate',
820
+ 'extend',
821
+ 'uploadCover',
822
+ 'uploadExtend',
823
+ 'addInstrumental',
824
+ 'addVocals',
825
+ 'replaceSection',
826
+ 'mashup',
827
+ 'lyricsV2',
828
+ 'timestampedLyrics',
829
+ 'separateVocals',
830
+ 'generateMidi',
831
+ 'convertWav',
832
+ 'musicVideo',
833
+ 'coverImage',
834
+ 'boostStyle',
835
+ 'generatePersona',
836
+ 'lyriaMusic',
837
+ 'getTaskV2',
838
+ ],
839
+ jupiter: ['omniImage', 'seedreamImage', 'getOmniStatus', 'getSeedreamStatus', 'recraftImage', 'getRecraftStatus'],
840
+ mars: ['textToVideo', 'imageToVideo', 'effects', 'motionControl', 'getTextStatus', 'getImageStatus', 'getEffectsStatus', 'getMotionStatus'],
841
+ saturn: ['video', 'turboTextToVideo', 'turboImageToVideo', 'getVideoStatus', 'getTurboStatus'],
842
+ omni: [
843
+ 'info',
844
+ 'createVideo',
845
+ 'getStatus',
846
+ 'videoOmni',
847
+ 'getVideoOmniStatus',
848
+ 'googleSubVideo',
849
+ 'getGoogleSubVideoStatus',
850
+ 'googleSubImage',
851
+ 'getGoogleSubImageStatus',
852
+ ],
853
+ kusok: [
854
+ 'listTags',
855
+ 'listElementVoices',
856
+ 'listAdvancedPresets',
857
+ 'getAdvancedPreset',
858
+ 'listCustomVoices',
859
+ 'createCustomVoice',
860
+ 'getCustomVoice',
861
+ 'deleteCustomVoices',
862
+ 'createElement',
863
+ 'listElements',
864
+ 'getElement',
865
+ 'deleteElement',
866
+ 'recognize',
867
+ 'createElementAsync',
868
+ 'recognizeAsync',
869
+ 'getAsyncTask',
870
+ 'getTask',
871
+ 'createVoice',
872
+ 'listVoices',
873
+ 'getVoice',
874
+ 'deleteVoice',
875
+ 'listPresetVoices',
876
+ ],
877
+ mercury: ['lipSync', 'advancedLipSync', 'identifyFace', 'getLipSyncStatus', 'getAdvancedLipSyncStatus'],
878
+ neptune: ['textToSpeech', 'getTask', 'listVoices'],
879
+ pluto: ['textToAudio', 'getAudioStatus', 'videoToAudio', 'getVideoAudioStatus'],
880
+ aries: ['getStatus'],
881
+ titan: [
882
+ 'initSelection',
883
+ 'addSelection',
884
+ 'deleteSelection',
885
+ 'clearSelection',
886
+ 'previewSelection',
887
+ 'createVideo',
888
+ 'getTask',
889
+ 'listTasks',
890
+ ],
891
+ hotCoffe: ['generateImage', 'getImageStatus', 'createVideo', 'getVideoStatus'],
892
+ moon: ['createVideo', 'estimate', 'getStatus'],
893
+ venus: ['avatarVideo', 'getStatus'],
894
+ x: ['imagineVideo', 'imagineImage', 'getVideoStatus', 'getImageStatus'],
895
+ minimax: ['createVideo', 'getTask', 'listVideos', 'taskAction', 'idempotencyKey'],
896
+ dola: ['generate', 'listModels', 'fileFromUrl', 'listFiles', 'getFile', 'deleteFile', 'getTask'],
897
+ alibaba: ['generateImage', 'generateVideo', 'estimate', 'getStatus'],
573
898
  };
574
899
  function getEndpoint(key) {
575
900
  const endpointDefinition = exports.ENDPOINT_REGISTRY[key];