@crowdin/n8n-nodes-crowdin 0.2.0 → 0.4.0

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 (63) hide show
  1. package/dist/nodes/Crowdin/properties/crowdin/fileBased/ai.js +1120 -103
  2. package/dist/nodes/Crowdin/properties/crowdin/fileBased/ai.js.map +1 -1
  3. package/dist/nodes/Crowdin/properties/crowdin/fileBased/applications.js +5 -5
  4. package/dist/nodes/Crowdin/properties/crowdin/fileBased/applications.js.map +1 -1
  5. package/dist/nodes/Crowdin/properties/crowdin/fileBased/bundles.js +156 -10
  6. package/dist/nodes/Crowdin/properties/crowdin/fileBased/bundles.js.map +1 -1
  7. package/dist/nodes/Crowdin/properties/crowdin/fileBased/distributions.js +0 -102
  8. package/dist/nodes/Crowdin/properties/crowdin/fileBased/distributions.js.map +1 -1
  9. package/dist/nodes/Crowdin/properties/crowdin/fileBased/integrations.js +14 -14
  10. package/dist/nodes/Crowdin/properties/crowdin/fileBased/integrations.js.map +1 -1
  11. package/dist/nodes/Crowdin/properties/crowdin/fileBased/tasks.js +119 -55
  12. package/dist/nodes/Crowdin/properties/crowdin/fileBased/tasks.js.map +1 -1
  13. package/dist/nodes/Crowdin/properties/crowdin/fileBased/translationMemory.js +2 -2
  14. package/dist/nodes/Crowdin/properties/crowdin/fileBased/translationMemory.js.map +1 -1
  15. package/dist/nodes/Crowdin/properties/crowdin/fileBased/translations.js +10 -10
  16. package/dist/nodes/Crowdin/properties/crowdin/fileBased/translations.js.map +1 -1
  17. package/dist/nodes/Crowdin/properties/crowdin/stringBased/ai.js +1120 -103
  18. package/dist/nodes/Crowdin/properties/crowdin/stringBased/ai.js.map +1 -1
  19. package/dist/nodes/Crowdin/properties/crowdin/stringBased/applications.js +5 -5
  20. package/dist/nodes/Crowdin/properties/crowdin/stringBased/applications.js.map +1 -1
  21. package/dist/nodes/Crowdin/properties/crowdin/stringBased/bundles.js +156 -10
  22. package/dist/nodes/Crowdin/properties/crowdin/stringBased/bundles.js.map +1 -1
  23. package/dist/nodes/Crowdin/properties/crowdin/stringBased/index.js +26 -26
  24. package/dist/nodes/Crowdin/properties/crowdin/stringBased/index.js.map +1 -1
  25. package/dist/nodes/Crowdin/properties/crowdin/stringBased/tasks.js +119 -55
  26. package/dist/nodes/Crowdin/properties/crowdin/stringBased/tasks.js.map +1 -1
  27. package/dist/nodes/Crowdin/properties/crowdin/stringBased/translationMemory.js +2 -2
  28. package/dist/nodes/Crowdin/properties/crowdin/stringBased/translationMemory.js.map +1 -1
  29. package/dist/nodes/Crowdin/properties/crowdin/stringBased/translations.js +2 -2
  30. package/dist/nodes/Crowdin/properties/crowdin/stringBased/translations.js.map +1 -1
  31. package/dist/nodes/Crowdin/properties/enterprise/fileBased/ai.js +1009 -97
  32. package/dist/nodes/Crowdin/properties/enterprise/fileBased/ai.js.map +1 -1
  33. package/dist/nodes/Crowdin/properties/enterprise/fileBased/applications.js +5 -5
  34. package/dist/nodes/Crowdin/properties/enterprise/fileBased/applications.js.map +1 -1
  35. package/dist/nodes/Crowdin/properties/enterprise/fileBased/bundles.js +156 -10
  36. package/dist/nodes/Crowdin/properties/enterprise/fileBased/bundles.js.map +1 -1
  37. package/dist/nodes/Crowdin/properties/enterprise/fileBased/distributions.js +0 -102
  38. package/dist/nodes/Crowdin/properties/enterprise/fileBased/distributions.js.map +1 -1
  39. package/dist/nodes/Crowdin/properties/enterprise/fileBased/integrations.js +14 -14
  40. package/dist/nodes/Crowdin/properties/enterprise/fileBased/integrations.js.map +1 -1
  41. package/dist/nodes/Crowdin/properties/enterprise/fileBased/reports.js +2504 -1332
  42. package/dist/nodes/Crowdin/properties/enterprise/fileBased/reports.js.map +1 -1
  43. package/dist/nodes/Crowdin/properties/enterprise/fileBased/tasks.js +40 -8
  44. package/dist/nodes/Crowdin/properties/enterprise/fileBased/tasks.js.map +1 -1
  45. package/dist/nodes/Crowdin/properties/enterprise/fileBased/translationMemory.js +5 -5
  46. package/dist/nodes/Crowdin/properties/enterprise/fileBased/translationMemory.js.map +1 -1
  47. package/dist/nodes/Crowdin/properties/enterprise/stringBased/ai.js +1009 -97
  48. package/dist/nodes/Crowdin/properties/enterprise/stringBased/ai.js.map +1 -1
  49. package/dist/nodes/Crowdin/properties/enterprise/stringBased/applications.js +5 -5
  50. package/dist/nodes/Crowdin/properties/enterprise/stringBased/applications.js.map +1 -1
  51. package/dist/nodes/Crowdin/properties/enterprise/stringBased/bundles.js +156 -10
  52. package/dist/nodes/Crowdin/properties/enterprise/stringBased/bundles.js.map +1 -1
  53. package/dist/nodes/Crowdin/properties/enterprise/stringBased/index.js +87 -87
  54. package/dist/nodes/Crowdin/properties/enterprise/stringBased/index.js.map +1 -1
  55. package/dist/nodes/Crowdin/properties/enterprise/stringBased/reports.js +2504 -1332
  56. package/dist/nodes/Crowdin/properties/enterprise/stringBased/reports.js.map +1 -1
  57. package/dist/nodes/Crowdin/properties/enterprise/stringBased/tasks.js +40 -8
  58. package/dist/nodes/Crowdin/properties/enterprise/stringBased/tasks.js.map +1 -1
  59. package/dist/nodes/Crowdin/properties/enterprise/stringBased/translationMemory.js +5 -5
  60. package/dist/nodes/Crowdin/properties/enterprise/stringBased/translationMemory.js.map +1 -1
  61. package/dist/package.json +1 -1
  62. package/dist/tsconfig.tsbuildinfo +1 -1
  63. package/package.json +1 -1
@@ -105,6 +105,76 @@ exports.aiProperties = [
105
105
  }
106
106
  }
107
107
  },
108
+ {
109
+ name: 'AI File Translations',
110
+ value: 'api.ai.file-translations.post',
111
+ action: 'AI File Translations',
112
+ description: '**Required scopes:** `ai.translate` (Read and Write).',
113
+ routing: {
114
+ request: {
115
+ method: 'POST',
116
+ url: '=/ai/file-translations'
117
+ }
118
+ }
119
+ },
120
+ {
121
+ name: 'Get File Translations Status',
122
+ value: 'api.ai.file-translations.get',
123
+ action: 'Get File Translations Status',
124
+ description: '**Required scopes:** `ai.translate` (Read and Write).',
125
+ routing: {
126
+ request: {
127
+ method: 'GET',
128
+ url: '=/ai/file-translations/{{$parameter["jobIdentifier"]}}'
129
+ }
130
+ }
131
+ },
132
+ {
133
+ name: 'Cancel File Translations',
134
+ value: 'api.ai.file-translations.delete',
135
+ action: 'Cancel File Translations',
136
+ description: '**Required scopes:** `ai.translate` (Read and Write).',
137
+ routing: {
138
+ request: {
139
+ method: 'DELETE',
140
+ url: '=/ai/file-translations/{{$parameter["jobIdentifier"]}}'
141
+ },
142
+ output: {
143
+ postReceive: [
144
+ {
145
+ type: 'set',
146
+ properties: {
147
+ value: '={{ { "success": true } }}'
148
+ }
149
+ }
150
+ ]
151
+ }
152
+ }
153
+ },
154
+ {
155
+ name: 'Download Translated File',
156
+ value: 'api.ai.file-translations.download',
157
+ action: 'Download Translated File',
158
+ description: '**Required scopes:** `ai.translate` (Read and Write).',
159
+ routing: {
160
+ request: {
161
+ method: 'GET',
162
+ url: '=/ai/file-translations/{{$parameter["jobIdentifier"]}}/download'
163
+ }
164
+ }
165
+ },
166
+ {
167
+ name: 'Download File Strings',
168
+ value: 'api.ai.file-translations.download-strings',
169
+ action: 'Download File Strings',
170
+ description: '**Required scopes:** `ai.translate` (Read and Write).',
171
+ routing: {
172
+ request: {
173
+ method: 'GET',
174
+ url: '=/ai/file-translations/{{$parameter["jobIdentifier"]}}/translations'
175
+ }
176
+ }
177
+ },
108
178
  {
109
179
  name: 'Clone AI Prompt',
110
180
  value: 'api.ai.prompts.clones.post',
@@ -535,6 +605,101 @@ exports.aiProperties = [
535
605
  }
536
606
  }
537
607
  },
608
+ {
609
+ displayName: 'POST /ai/file-translations',
610
+ name: 'operation',
611
+ type: 'notice',
612
+ typeOptions: {
613
+ theme: 'info'
614
+ },
615
+ default: '',
616
+ displayOptions: {
617
+ show: {
618
+ resource: [
619
+ 'ai'
620
+ ],
621
+ operation: [
622
+ 'api.ai.file-translations.post'
623
+ ]
624
+ }
625
+ }
626
+ },
627
+ {
628
+ displayName: 'GET /ai/file-translations/{jobIdentifier}',
629
+ name: 'operation',
630
+ type: 'notice',
631
+ typeOptions: {
632
+ theme: 'info'
633
+ },
634
+ default: '',
635
+ displayOptions: {
636
+ show: {
637
+ resource: [
638
+ 'ai'
639
+ ],
640
+ operation: [
641
+ 'api.ai.file-translations.get'
642
+ ]
643
+ }
644
+ }
645
+ },
646
+ {
647
+ displayName: 'DELETE /ai/file-translations/{jobIdentifier}',
648
+ name: 'operation',
649
+ type: 'notice',
650
+ typeOptions: {
651
+ theme: 'info'
652
+ },
653
+ default: '',
654
+ displayOptions: {
655
+ show: {
656
+ resource: [
657
+ 'ai'
658
+ ],
659
+ operation: [
660
+ 'api.ai.file-translations.delete'
661
+ ]
662
+ }
663
+ }
664
+ },
665
+ {
666
+ displayName: 'GET /ai/file-translations/{jobIdentifier}/download',
667
+ name: 'operation',
668
+ type: 'notice',
669
+ typeOptions: {
670
+ theme: 'info'
671
+ },
672
+ default: '',
673
+ displayOptions: {
674
+ show: {
675
+ resource: [
676
+ 'ai'
677
+ ],
678
+ operation: [
679
+ 'api.ai.file-translations.download'
680
+ ]
681
+ }
682
+ }
683
+ },
684
+ {
685
+ displayName: 'GET /ai/file-translations/{jobIdentifier}/translations',
686
+ name: 'operation',
687
+ type: 'notice',
688
+ typeOptions: {
689
+ theme: 'info'
690
+ },
691
+ default: '',
692
+ displayOptions: {
693
+ show: {
694
+ resource: [
695
+ 'ai'
696
+ ],
697
+ operation: [
698
+ 'api.ai.file-translations.download-strings'
699
+ ]
700
+ }
701
+ }
702
+ },
538
703
  {
539
704
  displayName: 'POST /ai/prompts/{aiPromptId}/clones',
540
705
  name: 'operation',
@@ -846,87 +1011,749 @@ exports.aiProperties = [
846
1011
  typeOptions: {
847
1012
  theme: 'info'
848
1013
  },
849
- default: '',
1014
+ default: '',
1015
+ displayOptions: {
1016
+ show: {
1017
+ resource: [
1018
+ 'ai'
1019
+ ],
1020
+ operation: [
1021
+ 'api.ai.reports.download.download'
1022
+ ]
1023
+ }
1024
+ }
1025
+ },
1026
+ {
1027
+ displayName: 'GET /ai/settings',
1028
+ name: 'operation',
1029
+ type: 'notice',
1030
+ typeOptions: {
1031
+ theme: 'info'
1032
+ },
1033
+ default: '',
1034
+ displayOptions: {
1035
+ show: {
1036
+ resource: [
1037
+ 'ai'
1038
+ ],
1039
+ operation: [
1040
+ 'api.ai.settings.get'
1041
+ ]
1042
+ }
1043
+ }
1044
+ },
1045
+ {
1046
+ displayName: 'POST /ai/translate',
1047
+ name: 'operation',
1048
+ type: 'notice',
1049
+ typeOptions: {
1050
+ theme: 'info'
1051
+ },
1052
+ default: '',
1053
+ displayOptions: {
1054
+ show: {
1055
+ resource: [
1056
+ 'ai'
1057
+ ],
1058
+ operation: [
1059
+ 'api.ai.translate.strings.post'
1060
+ ]
1061
+ }
1062
+ }
1063
+ },
1064
+ {
1065
+ displayName: 'GET /projects/{projectId}/ai/settings',
1066
+ name: 'operation',
1067
+ type: 'notice',
1068
+ typeOptions: {
1069
+ theme: 'info'
1070
+ },
1071
+ default: '',
1072
+ displayOptions: {
1073
+ show: {
1074
+ resource: [
1075
+ 'ai'
1076
+ ],
1077
+ operation: [
1078
+ 'api.projects.ai.settings.get'
1079
+ ]
1080
+ }
1081
+ }
1082
+ },
1083
+ {
1084
+ displayName: 'Limit',
1085
+ name: 'limit',
1086
+ description: 'Max number of results to return',
1087
+ default: 50,
1088
+ type: 'number',
1089
+ routing: {
1090
+ send: {
1091
+ type: 'query',
1092
+ property: 'limit',
1093
+ value: '={{ typeof $value === \'number\' ? $value : undefined }}',
1094
+ propertyInDotNotation: false
1095
+ }
1096
+ },
1097
+ displayOptions: {
1098
+ show: {
1099
+ resource: [
1100
+ 'ai'
1101
+ ],
1102
+ operation: [
1103
+ 'api.ai.prompts.snippets.getMany'
1104
+ ],
1105
+ returnAll: [
1106
+ false
1107
+ ]
1108
+ }
1109
+ },
1110
+ typeOptions: {
1111
+ minValue: 1
1112
+ }
1113
+ },
1114
+ {
1115
+ displayName: 'Description',
1116
+ required: true,
1117
+ name: 'description',
1118
+ type: 'string',
1119
+ default: '',
1120
+ description: 'The description must be unique and must be between 3 and 255 characters.',
1121
+ routing: {
1122
+ send: {
1123
+ property: 'description',
1124
+ propertyInDotNotation: false,
1125
+ type: 'body',
1126
+ value: '={{ $value || undefined }}'
1127
+ }
1128
+ },
1129
+ displayOptions: {
1130
+ show: {
1131
+ resource: [
1132
+ 'ai'
1133
+ ],
1134
+ operation: [
1135
+ 'api.ai.prompts.snippets.post'
1136
+ ]
1137
+ }
1138
+ },
1139
+ placeholder: 'Product description'
1140
+ },
1141
+ {
1142
+ displayName: 'Placeholder',
1143
+ required: true,
1144
+ name: 'placeholder',
1145
+ type: 'string',
1146
+ default: '',
1147
+ description: 'The placeholder must be unique and must start with `%custom:` and end with `%`. Allowed characters: `a-z`, `A-Z`, `0-9`, `-`. The full length must not exceed 255 characters.',
1148
+ routing: {
1149
+ send: {
1150
+ property: 'placeholder',
1151
+ propertyInDotNotation: false,
1152
+ type: 'body',
1153
+ value: '={{ $value || undefined }}'
1154
+ }
1155
+ },
1156
+ displayOptions: {
1157
+ show: {
1158
+ resource: [
1159
+ 'ai'
1160
+ ],
1161
+ operation: [
1162
+ 'api.ai.prompts.snippets.post'
1163
+ ]
1164
+ }
1165
+ },
1166
+ placeholder: '%custom:productDescription%'
1167
+ },
1168
+ {
1169
+ displayName: 'Value',
1170
+ required: true,
1171
+ name: 'value',
1172
+ type: 'string',
1173
+ default: '',
1174
+ description: 'The text that will be utilized in the prompt. The value must not exceed 4000 characters.',
1175
+ routing: {
1176
+ send: {
1177
+ property: 'value',
1178
+ propertyInDotNotation: false,
1179
+ type: 'body',
1180
+ value: '={{ $value || undefined }}'
1181
+ }
1182
+ },
1183
+ displayOptions: {
1184
+ show: {
1185
+ resource: [
1186
+ 'ai'
1187
+ ],
1188
+ operation: [
1189
+ 'api.ai.prompts.snippets.post'
1190
+ ]
1191
+ }
1192
+ },
1193
+ placeholder: 'The product is the professional consulting service that transform challenges into opportunities.'
1194
+ },
1195
+ {
1196
+ displayName: 'Ai Snippet Id',
1197
+ name: 'aiSnippetId',
1198
+ required: true,
1199
+ description: 'AI Snippet identifier. Get via [List AI Snippets](#operation/api.ai.prompts.snippets.getMany)',
1200
+ default: '',
1201
+ type: 'options',
1202
+ displayOptions: {
1203
+ show: {
1204
+ resource: [
1205
+ 'ai'
1206
+ ],
1207
+ operation: [
1208
+ 'api.ai.prompts.snippets.get'
1209
+ ]
1210
+ }
1211
+ },
1212
+ typeOptions: {
1213
+ loadOptionsMethod: 'getAiSnippets'
1214
+ }
1215
+ },
1216
+ {
1217
+ displayName: 'Ai Snippet Id',
1218
+ name: 'aiSnippetId',
1219
+ required: true,
1220
+ description: 'AI Snippet identifier. Get via [List AI Snippets](#operation/api.ai.prompts.snippets.getMany)',
1221
+ default: '',
1222
+ type: 'options',
1223
+ displayOptions: {
1224
+ show: {
1225
+ resource: [
1226
+ 'ai'
1227
+ ],
1228
+ operation: [
1229
+ 'api.ai.prompts.snippets.delete'
1230
+ ]
1231
+ }
1232
+ },
1233
+ typeOptions: {
1234
+ loadOptionsMethod: 'getAiSnippets'
1235
+ }
1236
+ },
1237
+ {
1238
+ displayName: 'Ai Snippet Id',
1239
+ name: 'aiSnippetId',
1240
+ required: true,
1241
+ description: 'AI Snippet identifier. Get via [List AI Snippets](#operation/api.ai.prompts.snippets.getMany)',
1242
+ default: '',
1243
+ type: 'options',
1244
+ displayOptions: {
1245
+ show: {
1246
+ resource: [
1247
+ 'ai'
1248
+ ],
1249
+ operation: [
1250
+ 'api.ai.prompts.snippets.patch'
1251
+ ]
1252
+ }
1253
+ },
1254
+ typeOptions: {
1255
+ loadOptionsMethod: 'getAiSnippets'
1256
+ }
1257
+ },
1258
+ {
1259
+ displayName: 'Storage Id',
1260
+ required: true,
1261
+ name: 'storageId',
1262
+ type: 'options',
1263
+ default: '',
1264
+ description: 'Storage Identifier of the file to translate. Get via [List Storages](#operation/api.storages.getMany)',
1265
+ routing: {
1266
+ send: {
1267
+ property: 'storageId',
1268
+ propertyInDotNotation: false,
1269
+ type: 'body',
1270
+ value: '={{ $value }}'
1271
+ }
1272
+ },
1273
+ displayOptions: {
1274
+ show: {
1275
+ resource: [
1276
+ 'ai'
1277
+ ],
1278
+ operation: [
1279
+ 'api.ai.file-translations.post'
1280
+ ]
1281
+ }
1282
+ },
1283
+ typeOptions: {
1284
+ loadOptionsMethod: 'getStorages'
1285
+ }
1286
+ },
1287
+ {
1288
+ displayName: 'Source Language Id',
1289
+ name: 'sourceLanguageId',
1290
+ type: 'options',
1291
+ default: '',
1292
+ description: 'Source Language Identifier. Get via [List Supported Languages](#operation/api.languages.getMany). If not specified, auto-detection will be used.',
1293
+ routing: {
1294
+ send: {
1295
+ property: 'sourceLanguageId',
1296
+ propertyInDotNotation: false,
1297
+ type: 'body',
1298
+ value: '={{ $value || undefined }}'
1299
+ }
1300
+ },
1301
+ displayOptions: {
1302
+ show: {
1303
+ resource: [
1304
+ 'ai'
1305
+ ],
1306
+ operation: [
1307
+ 'api.ai.file-translations.post'
1308
+ ]
1309
+ }
1310
+ },
1311
+ typeOptions: {
1312
+ loadOptionsMethod: 'getLanguages'
1313
+ }
1314
+ },
1315
+ {
1316
+ displayName: 'Target Language Id',
1317
+ required: true,
1318
+ name: 'targetLanguageId',
1319
+ type: 'options',
1320
+ default: '',
1321
+ description: 'Target Language Identifier. Get via [List Supported Languages](#operation/api.languages.getMany)',
1322
+ routing: {
1323
+ send: {
1324
+ property: 'targetLanguageId',
1325
+ propertyInDotNotation: false,
1326
+ type: 'body',
1327
+ value: '={{ $value || undefined }}'
1328
+ }
1329
+ },
1330
+ displayOptions: {
1331
+ show: {
1332
+ resource: [
1333
+ 'ai'
1334
+ ],
1335
+ operation: [
1336
+ 'api.ai.file-translations.post'
1337
+ ]
1338
+ }
1339
+ },
1340
+ typeOptions: {
1341
+ loadOptionsMethod: 'getLanguages'
1342
+ }
1343
+ },
1344
+ {
1345
+ displayName: 'Type',
1346
+ name: 'type',
1347
+ type: 'options',
1348
+ default: '',
1349
+ description: 'Values available:\n- empty value or \'auto\' — Try to detect file type by extension or MIME type\n- \'android\' — Android (*.xml)\n- \'macosx\' — Mac OS X / iOS (*.strings)\n- \'resx\' — .NET, Windows Phone (*.resx)\n- \'properties\' — Java (*.properties)\n- \'gettext\' — GNU GetText (*.po, *.pot)\n- \'yaml\' — Ruby On Rails (*.yaml, *.yml)\n- \'php\' — Hypertext Preprocessor (*.php)\n- \'json\' — Generic JSON (*.json)\n- \'xml\' — Generic XML (*.xml)\n- \'ini\' — Generic INI (*.ini)\n- \'rc\' — Windows Resources (*.rc)\n- \'resw\' — Windows 8 Metro (*.resw)\n- \'resjson\' — Windows 8 Metro (*.resjson)\n- \'qtts\' — Nokia Qt (*.ts)\n- \'joomla\' — Joomla localizable resources (*.ini)\n- \'chrome\' — Google Chrome Extension (*.json)\n- \'dtd\' — Mozilla DTD (*.dtd)\n- \'dklang\' — Delphi DKLang (*.dklang)\n- \'flex\' — Flex (*.properties)\n- \'nsh\' — NSIS Installer Resources (*.nsh)\n- \'wxl\' — WiX Installer (*.wxl)\n- \'xliff\' — XLIFF (*.xliff, *.xlf)\n- \'xliff_two\' — XLIFF 2.0 (*.xliff, *.xlf)\n- \'html\' — HTML (*.html, *.htm, *.xhtml, *.xhtm, *.xht, *.hbs, *.liquid)\n- \'haml\' — Haml (*.haml)\n- \'txt\' — Plain Text (*.txt)\n- \'csv\' — Comma Separated Values (*.csv)\n- \'md\' — Markdown (*.md, *.text, *.markdown...)\n- \'flsnp\' — MadCap Flare (*.flnsp, .flpgpl .fltoc)\n- \'fm_html\' — Jekyll HTML (*.html)\n- \'fm_md\' — Jekyll Markdown (*.md)\n- \'mediawiki\' — MediaWiki (*.wiki, *.wikitext, *.mediawiki)\n- \'docx\' — Microsoft Office, OpenOffice.org Documents, Adobe InDesign, Adobe FrameMaker(*.docx, *.dotx, *.docm, *.dotm, *.xlsx, *.xltx, *.xlsm, *.xltm, *.pptx, *.potx, *.ppsx, *.pptm, *.potm, *.ppsm, *.odt, *.ods, *.odg, *.odp, *.imdl, *.mif)\n- \'xlsx\' — Microsoft Excel (*.xlsx)\n- \'sbv\' — Youtube .sbv (*.sbv)\n- \'properties_play\' — Play Framework\n- \'properties_xml\' — Java Application (*.xml)\n- \'maxthon\' — Maxthon Browser (*.ini)\n- \'go_json\' — Go (*.gotext.json)\n- \'dita\' — DITA Document (*.dita, *.ditamap)\n- \'mif\' — Adobe FrameMaker (*.mif)\n- \'idml\' — Adobe InDesign (*.idml)\n- \'stringsdict\' — iOS (*.stringsdict)\n- \'plist\' — Mac OS property list (*.plist)\n- \'vtt\' — Video Subtitling and WebVTT (*.vtt)\n- \'vdf\' — Steamworks Localization Valve Data File (*.vdf)\n- \'srt\' — SubRip .srt (*.srt)\n- \'stf\' — Salesforce (*.stf)\n- \'toml\' — Toml (*.toml)\n- \'contentful_rt\' — Contentful (*.json)\n- \'svg\' — SVG (*.svg)\n- \'js\' — JavaScript (*.js)\n- \'coffee\' — CoffeeScript (*.coffee)\n- \'nestjs_i18n\' - NestJS i18n\n- \'loc\' — LOC (*.loc)\n\n__Note__: Use `docx` type to import each cell as a separate source string for XLSX file',
1350
+ options: [
1351
+ {
1352
+ name: '-',
1353
+ value: ''
1354
+ },
1355
+ {
1356
+ name: 'auto',
1357
+ value: 'auto'
1358
+ },
1359
+ {
1360
+ name: 'android',
1361
+ value: 'android'
1362
+ },
1363
+ {
1364
+ name: 'macosx',
1365
+ value: 'macosx'
1366
+ },
1367
+ {
1368
+ name: 'resx',
1369
+ value: 'resx'
1370
+ },
1371
+ {
1372
+ name: 'properties',
1373
+ value: 'properties'
1374
+ },
1375
+ {
1376
+ name: 'gettext',
1377
+ value: 'gettext'
1378
+ },
1379
+ {
1380
+ name: 'yaml',
1381
+ value: 'yaml'
1382
+ },
1383
+ {
1384
+ name: 'php',
1385
+ value: 'php'
1386
+ },
1387
+ {
1388
+ name: 'json',
1389
+ value: 'json'
1390
+ },
1391
+ {
1392
+ name: 'xml',
1393
+ value: 'xml'
1394
+ },
1395
+ {
1396
+ name: 'ini',
1397
+ value: 'ini'
1398
+ },
1399
+ {
1400
+ name: 'rc',
1401
+ value: 'rc'
1402
+ },
1403
+ {
1404
+ name: 'resw',
1405
+ value: 'resw'
1406
+ },
1407
+ {
1408
+ name: 'resjson',
1409
+ value: 'resjson'
1410
+ },
1411
+ {
1412
+ name: 'qtts',
1413
+ value: 'qtts'
1414
+ },
1415
+ {
1416
+ name: 'joomla',
1417
+ value: 'joomla'
1418
+ },
1419
+ {
1420
+ name: 'chrome',
1421
+ value: 'chrome'
1422
+ },
1423
+ {
1424
+ name: 'dtd',
1425
+ value: 'dtd'
1426
+ },
1427
+ {
1428
+ name: 'dklang',
1429
+ value: 'dklang'
1430
+ },
1431
+ {
1432
+ name: 'flex',
1433
+ value: 'flex'
1434
+ },
1435
+ {
1436
+ name: 'nsh',
1437
+ value: 'nsh'
1438
+ },
1439
+ {
1440
+ name: 'wxl',
1441
+ value: 'wxl'
1442
+ },
1443
+ {
1444
+ name: 'xliff',
1445
+ value: 'xliff'
1446
+ },
1447
+ {
1448
+ name: 'xliff_two',
1449
+ value: 'xliff_two'
1450
+ },
1451
+ {
1452
+ name: 'html',
1453
+ value: 'html'
1454
+ },
1455
+ {
1456
+ name: 'haml',
1457
+ value: 'haml'
1458
+ },
1459
+ {
1460
+ name: 'txt',
1461
+ value: 'txt'
1462
+ },
1463
+ {
1464
+ name: 'csv',
1465
+ value: 'csv'
1466
+ },
1467
+ {
1468
+ name: 'md',
1469
+ value: 'md'
1470
+ },
1471
+ {
1472
+ name: 'mdx_v1',
1473
+ value: 'mdx_v1'
1474
+ },
1475
+ {
1476
+ name: 'mdx_v2',
1477
+ value: 'mdx_v2'
1478
+ },
1479
+ {
1480
+ name: 'flsnp',
1481
+ value: 'flsnp'
1482
+ },
1483
+ {
1484
+ name: 'fm_html',
1485
+ value: 'fm_html'
1486
+ },
1487
+ {
1488
+ name: 'fm_md',
1489
+ value: 'fm_md'
1490
+ },
1491
+ {
1492
+ name: 'mediawiki',
1493
+ value: 'mediawiki'
1494
+ },
1495
+ {
1496
+ name: 'docx',
1497
+ value: 'docx'
1498
+ },
1499
+ {
1500
+ name: 'xlsx',
1501
+ value: 'xlsx'
1502
+ },
1503
+ {
1504
+ name: 'sbv',
1505
+ value: 'sbv'
1506
+ },
1507
+ {
1508
+ name: 'properties_play',
1509
+ value: 'properties_play'
1510
+ },
1511
+ {
1512
+ name: 'properties_xml',
1513
+ value: 'properties_xml'
1514
+ },
1515
+ {
1516
+ name: 'maxthon',
1517
+ value: 'maxthon'
1518
+ },
1519
+ {
1520
+ name: 'go_json',
1521
+ value: 'go_json'
1522
+ },
1523
+ {
1524
+ name: 'dita',
1525
+ value: 'dita'
1526
+ },
1527
+ {
1528
+ name: 'idml',
1529
+ value: 'idml'
1530
+ },
1531
+ {
1532
+ name: 'mif',
1533
+ value: 'mif'
1534
+ },
1535
+ {
1536
+ name: 'stringsdict',
1537
+ value: 'stringsdict'
1538
+ },
1539
+ {
1540
+ name: 'plist',
1541
+ value: 'plist'
1542
+ },
1543
+ {
1544
+ name: 'vtt',
1545
+ value: 'vtt'
1546
+ },
1547
+ {
1548
+ name: 'vdf',
1549
+ value: 'vdf'
1550
+ },
1551
+ {
1552
+ name: 'srt',
1553
+ value: 'srt'
1554
+ },
1555
+ {
1556
+ name: 'stf',
1557
+ value: 'stf'
1558
+ },
1559
+ {
1560
+ name: 'toml',
1561
+ value: 'toml'
1562
+ },
1563
+ {
1564
+ name: 'contentful_rt',
1565
+ value: 'contentful_rt'
1566
+ },
1567
+ {
1568
+ name: 'svg',
1569
+ value: 'svg'
1570
+ },
1571
+ {
1572
+ name: 'js',
1573
+ value: 'js'
1574
+ },
1575
+ {
1576
+ name: 'coffee',
1577
+ value: 'coffee'
1578
+ },
1579
+ {
1580
+ name: 'ts',
1581
+ value: 'ts'
1582
+ },
1583
+ {
1584
+ name: 'i18next_json',
1585
+ value: 'i18next_json'
1586
+ },
1587
+ {
1588
+ name: 'xaml',
1589
+ value: 'xaml'
1590
+ },
1591
+ {
1592
+ name: 'arb',
1593
+ value: 'arb'
1594
+ },
1595
+ {
1596
+ name: 'adoc',
1597
+ value: 'adoc'
1598
+ },
1599
+ {
1600
+ name: 'fbt',
1601
+ value: 'fbt'
1602
+ },
1603
+ {
1604
+ name: 'webxml',
1605
+ value: 'webxml'
1606
+ },
1607
+ {
1608
+ name: 'nestjs_i18n',
1609
+ value: 'nestjs_i18n'
1610
+ },
1611
+ {
1612
+ name: 'loc',
1613
+ value: 'loc'
1614
+ }
1615
+ ],
1616
+ routing: {
1617
+ send: {
1618
+ property: 'type',
1619
+ propertyInDotNotation: false,
1620
+ type: 'body',
1621
+ value: '={{ $value || undefined }}'
1622
+ }
1623
+ },
1624
+ displayOptions: {
1625
+ show: {
1626
+ resource: [
1627
+ 'ai'
1628
+ ],
1629
+ operation: [
1630
+ 'api.ai.file-translations.post'
1631
+ ]
1632
+ }
1633
+ }
1634
+ },
1635
+ {
1636
+ displayName: 'Parser Version',
1637
+ name: 'parserVersion',
1638
+ type: 'number',
1639
+ default: 0,
1640
+ description: 'Using latest parser version by default.\n\n__Note:__ Must be used together with `type`',
1641
+ routing: {
1642
+ send: {
1643
+ property: 'parserVersion',
1644
+ propertyInDotNotation: false,
1645
+ type: 'body',
1646
+ value: '={{ $value !== 0 ? $value : undefined }}'
1647
+ }
1648
+ },
850
1649
  displayOptions: {
851
1650
  show: {
852
1651
  resource: [
853
1652
  'ai'
854
1653
  ],
855
1654
  operation: [
856
- 'api.ai.reports.download.download'
1655
+ 'api.ai.file-translations.post'
857
1656
  ]
858
1657
  }
859
- }
1658
+ },
1659
+ placeholder: '1'
860
1660
  },
861
1661
  {
862
- displayName: 'GET /ai/settings',
863
- name: 'operation',
864
- type: 'notice',
865
- typeOptions: {
866
- theme: 'info'
1662
+ displayName: 'Tm Ids',
1663
+ name: 'tmIds',
1664
+ type: 'multiOptions',
1665
+ default: [],
1666
+ description: 'Array of Translation Memory IDs. Get via [List TMs](#operation/api.tms.getMany)',
1667
+ routing: {
1668
+ send: {
1669
+ property: 'tmIds',
1670
+ propertyInDotNotation: false,
1671
+ type: 'body',
1672
+ value: '={{ $value }}'
1673
+ }
867
1674
  },
868
- default: '',
869
1675
  displayOptions: {
870
1676
  show: {
871
1677
  resource: [
872
1678
  'ai'
873
1679
  ],
874
1680
  operation: [
875
- 'api.ai.settings.get'
1681
+ 'api.ai.file-translations.post'
876
1682
  ]
877
1683
  }
1684
+ },
1685
+ typeOptions: {
1686
+ loadOptionsMethod: 'getTranslationMemoriesMulti'
878
1687
  }
879
1688
  },
880
1689
  {
881
- displayName: 'POST /ai/translate',
882
- name: 'operation',
883
- type: 'notice',
884
- typeOptions: {
885
- theme: 'info'
1690
+ displayName: 'Glossary Ids',
1691
+ name: 'glossaryIds',
1692
+ type: 'multiOptions',
1693
+ default: [],
1694
+ description: 'Array of Glossary Identifiers. Get via [List Glossaries](#operation/api.glossaries.getMany)',
1695
+ routing: {
1696
+ send: {
1697
+ property: 'glossaryIds',
1698
+ propertyInDotNotation: false,
1699
+ type: 'body',
1700
+ value: '={{ $value }}'
1701
+ }
886
1702
  },
887
- default: '',
888
1703
  displayOptions: {
889
1704
  show: {
890
1705
  resource: [
891
1706
  'ai'
892
1707
  ],
893
1708
  operation: [
894
- 'api.ai.translate.strings.post'
1709
+ 'api.ai.file-translations.post'
895
1710
  ]
896
1711
  }
1712
+ },
1713
+ typeOptions: {
1714
+ loadOptionsMethod: 'getGlossariesMulti'
897
1715
  }
898
1716
  },
899
1717
  {
900
- displayName: 'GET /projects/{projectId}/ai/settings',
901
- name: 'operation',
902
- type: 'notice',
903
- typeOptions: {
904
- theme: 'info'
905
- },
1718
+ displayName: 'Ai Prompt Id',
1719
+ name: 'aiPromptId',
1720
+ type: 'options',
906
1721
  default: '',
1722
+ description: 'Pre-Translation Prompt Identifier. Get via [List Prompts](#operation/api.ai.prompts.getMany)\n\n__Note:__ Can\'t be used with `aiProviderId` or `aiModelId` in same request',
1723
+ routing: {
1724
+ send: {
1725
+ property: 'aiPromptId',
1726
+ propertyInDotNotation: false,
1727
+ type: 'body',
1728
+ value: '={{ typeof $value === \'number\' ? $value : undefined }}'
1729
+ }
1730
+ },
907
1731
  displayOptions: {
908
1732
  show: {
909
1733
  resource: [
910
1734
  'ai'
911
1735
  ],
912
1736
  operation: [
913
- 'api.projects.ai.settings.get'
1737
+ 'api.ai.file-translations.post'
914
1738
  ]
915
1739
  }
1740
+ },
1741
+ typeOptions: {
1742
+ loadOptionsMethod: 'getAiPrompts'
916
1743
  }
917
1744
  },
918
1745
  {
919
- displayName: 'Limit',
920
- name: 'limit',
921
- description: 'Max number of results to return',
922
- default: 50,
923
- type: 'number',
1746
+ displayName: 'Ai Provider Id',
1747
+ name: 'aiProviderId',
1748
+ type: 'options',
1749
+ default: '',
1750
+ description: 'AI Provider Identifier. Get via [List AI Providers](#operation/api.ai.providers.getMany)\n\n__Note:__ Must be used together with `aiModelId`. Can\'t be used with `aiPromptId` in same request',
924
1751
  routing: {
925
1752
  send: {
926
- type: 'query',
927
- property: 'limit',
928
- value: '={{ typeof $value === \'number\' ? $value : undefined }}',
929
- propertyInDotNotation: false
1753
+ property: 'aiProviderId',
1754
+ propertyInDotNotation: false,
1755
+ type: 'body',
1756
+ value: '={{ typeof $value === \'number\' ? $value : undefined }}'
930
1757
  }
931
1758
  },
932
1759
  displayOptions: {
@@ -935,27 +1762,23 @@ exports.aiProperties = [
935
1762
  'ai'
936
1763
  ],
937
1764
  operation: [
938
- 'api.ai.prompts.snippets.getMany'
939
- ],
940
- returnAll: [
941
- false
1765
+ 'api.ai.file-translations.post'
942
1766
  ]
943
1767
  }
944
1768
  },
945
1769
  typeOptions: {
946
- minValue: 1
1770
+ loadOptionsMethod: 'getAiProviders'
947
1771
  }
948
1772
  },
949
1773
  {
950
- displayName: 'Description',
951
- required: true,
952
- name: 'description',
953
- type: 'string',
1774
+ displayName: 'Ai Model Id',
1775
+ name: 'aiModelId',
1776
+ type: 'options',
954
1777
  default: '',
955
- description: 'The description must be unique and must be between 3 and 255 characters.',
1778
+ description: 'AI Model ID. Get via [List AI Provider Models](#operation/api.ai.providers.models.getMany)\n\n__Note:__ Must be used together with `aiProviderId`. Can\'t be used with `aiPromptId` in same request',
956
1779
  routing: {
957
1780
  send: {
958
- property: 'description',
1781
+ property: 'aiModelId',
959
1782
  propertyInDotNotation: false,
960
1783
  type: 'body',
961
1784
  value: '={{ $value || undefined }}'
@@ -967,25 +1790,29 @@ exports.aiProperties = [
967
1790
  'ai'
968
1791
  ],
969
1792
  operation: [
970
- 'api.ai.prompts.snippets.post'
1793
+ 'api.ai.file-translations.post'
971
1794
  ]
972
1795
  }
973
1796
  },
974
- placeholder: 'Product description'
1797
+ typeOptions: {
1798
+ loadOptionsMethod: 'getAiProviderModels',
1799
+ loadOptionsDependsOn: [
1800
+ 'aiProviderId'
1801
+ ]
1802
+ }
975
1803
  },
976
1804
  {
977
- displayName: 'Placeholder',
978
- required: true,
979
- name: 'placeholder',
980
- type: 'string',
981
- default: '',
982
- description: 'The placeholder must be unique and must start with `%custom:` and end with `%`. Allowed characters: `a-z`, `A-Z`, `0-9`, `-`. The full length must not exceed 255 characters.',
1805
+ displayName: 'Instructions',
1806
+ name: 'instructions',
1807
+ type: 'fixedCollection',
1808
+ default: {},
1809
+ description: 'Custom instructions for translation',
983
1810
  routing: {
984
1811
  send: {
985
- property: 'placeholder',
1812
+ property: 'instructions',
986
1813
  propertyInDotNotation: false,
987
1814
  type: 'body',
988
- value: '={{ $value || undefined }}'
1815
+ value: '={{ $value.items?.map(i => i._value) || undefined }}'
989
1816
  }
990
1817
  },
991
1818
  displayOptions: {
@@ -994,25 +1821,41 @@ exports.aiProperties = [
994
1821
  'ai'
995
1822
  ],
996
1823
  operation: [
997
- 'api.ai.prompts.snippets.post'
1824
+ 'api.ai.file-translations.post'
998
1825
  ]
999
1826
  }
1000
1827
  },
1001
- placeholder: '%custom:productDescription%'
1828
+ typeOptions: {
1829
+ multipleValues: true
1830
+ },
1831
+ placeholder: 'Add Item',
1832
+ options: [
1833
+ {
1834
+ displayName: 'Items',
1835
+ name: 'items',
1836
+ values: [
1837
+ {
1838
+ displayName: 'Value',
1839
+ name: '_value',
1840
+ type: 'string',
1841
+ default: ''
1842
+ }
1843
+ ]
1844
+ }
1845
+ ]
1002
1846
  },
1003
1847
  {
1004
- displayName: 'Value',
1005
- required: true,
1006
- name: 'value',
1007
- type: 'string',
1008
- default: '',
1009
- description: 'The text that will be utilized in the prompt. The value must not exceed 4000 characters.',
1848
+ displayName: 'Attachment Ids',
1849
+ name: 'attachmentIds',
1850
+ type: 'fixedCollection',
1851
+ default: {},
1852
+ description: 'Storage IDs of images to pass to AI as attachments (max 10). Get via [List Storages](#operation/api.storages.getMany)\n\nOnly image files are allowed:\n * jpeg\n * jpg\n * png\n * gif\n * webp',
1010
1853
  routing: {
1011
1854
  send: {
1012
- property: 'value',
1855
+ property: 'attachmentIds',
1013
1856
  propertyInDotNotation: false,
1014
1857
  type: 'body',
1015
- value: '={{ $value || undefined }}'
1858
+ value: '={{ $value.items?.map(i => i._value) || undefined }}'
1016
1859
  }
1017
1860
  },
1018
1861
  displayOptions: {
@@ -1021,73 +1864,100 @@ exports.aiProperties = [
1021
1864
  'ai'
1022
1865
  ],
1023
1866
  operation: [
1024
- 'api.ai.prompts.snippets.post'
1867
+ 'api.ai.file-translations.post'
1025
1868
  ]
1026
1869
  }
1027
1870
  },
1028
- placeholder: 'The product is the professional consulting service that transform challenges into opportunities.'
1871
+ typeOptions: {
1872
+ multipleValues: true
1873
+ },
1874
+ placeholder: 'Add Item',
1875
+ options: [
1876
+ {
1877
+ displayName: 'Items',
1878
+ name: 'items',
1879
+ values: [
1880
+ {
1881
+ displayName: 'Value',
1882
+ name: '_value',
1883
+ type: 'number',
1884
+ default: 0,
1885
+ placeholder: '0'
1886
+ }
1887
+ ]
1888
+ }
1889
+ ]
1029
1890
  },
1030
1891
  {
1031
- displayName: 'Ai Snippet Id',
1032
- name: 'aiSnippetId',
1892
+ displayName: 'Job Identifier',
1893
+ name: 'jobIdentifier',
1033
1894
  required: true,
1034
- description: 'AI Snippet identifier. Get via [List AI Snippets](#operation/api.ai.prompts.snippets.getMany)',
1895
+ description: 'AI File Translations job identifier',
1035
1896
  default: '',
1036
- type: 'options',
1897
+ type: 'string',
1037
1898
  displayOptions: {
1038
1899
  show: {
1039
1900
  resource: [
1040
1901
  'ai'
1041
1902
  ],
1042
1903
  operation: [
1043
- 'api.ai.prompts.snippets.get'
1904
+ 'api.ai.file-translations.get'
1044
1905
  ]
1045
1906
  }
1046
- },
1047
- typeOptions: {
1048
- loadOptionsMethod: 'getAiSnippets'
1049
1907
  }
1050
1908
  },
1051
1909
  {
1052
- displayName: 'Ai Snippet Id',
1053
- name: 'aiSnippetId',
1910
+ displayName: 'Job Identifier',
1911
+ name: 'jobIdentifier',
1054
1912
  required: true,
1055
- description: 'AI Snippet identifier. Get via [List AI Snippets](#operation/api.ai.prompts.snippets.getMany)',
1913
+ description: 'AI File Translations job identifier',
1056
1914
  default: '',
1057
- type: 'options',
1915
+ type: 'string',
1058
1916
  displayOptions: {
1059
1917
  show: {
1060
1918
  resource: [
1061
1919
  'ai'
1062
1920
  ],
1063
1921
  operation: [
1064
- 'api.ai.prompts.snippets.delete'
1922
+ 'api.ai.file-translations.delete'
1065
1923
  ]
1066
1924
  }
1067
- },
1068
- typeOptions: {
1069
- loadOptionsMethod: 'getAiSnippets'
1070
1925
  }
1071
1926
  },
1072
1927
  {
1073
- displayName: 'Ai Snippet Id',
1074
- name: 'aiSnippetId',
1928
+ displayName: 'Job Identifier',
1929
+ name: 'jobIdentifier',
1075
1930
  required: true,
1076
- description: 'AI Snippet identifier. Get via [List AI Snippets](#operation/api.ai.prompts.snippets.getMany)',
1931
+ description: 'AI File Translations job identifier',
1077
1932
  default: '',
1078
- type: 'options',
1933
+ type: 'string',
1079
1934
  displayOptions: {
1080
1935
  show: {
1081
1936
  resource: [
1082
1937
  'ai'
1083
1938
  ],
1084
1939
  operation: [
1085
- 'api.ai.prompts.snippets.patch'
1940
+ 'api.ai.file-translations.download'
1941
+ ]
1942
+ }
1943
+ }
1944
+ },
1945
+ {
1946
+ displayName: 'Job Identifier',
1947
+ name: 'jobIdentifier',
1948
+ required: true,
1949
+ description: 'AI File Translations job identifier',
1950
+ default: '',
1951
+ type: 'string',
1952
+ displayOptions: {
1953
+ show: {
1954
+ resource: [
1955
+ 'ai'
1956
+ ],
1957
+ operation: [
1958
+ 'api.ai.file-translations.download-strings'
1086
1959
  ]
1087
1960
  }
1088
- },
1089
- typeOptions: {
1090
- loadOptionsMethod: 'getAiSnippets'
1091
1961
  }
1092
1962
  },
1093
1963
  {
@@ -2079,6 +2949,10 @@ exports.aiProperties = [
2079
2949
  name: 'google_gemini',
2080
2950
  value: 'google_gemini'
2081
2951
  },
2952
+ {
2953
+ name: 'google_gemini_ai_studio',
2954
+ value: 'google_gemini_ai_studio'
2955
+ },
2082
2956
  {
2083
2957
  name: 'mistral_ai',
2084
2958
  value: 'mistral_ai'
@@ -2194,8 +3068,8 @@ exports.aiProperties = [
2194
3068
  ]
2195
3069
  },
2196
3070
  {
2197
- displayName: 'Google Gemini',
2198
- name: '_googleGemini',
3071
+ displayName: 'Google Gemini (Vertex AI)',
3072
+ name: '_googleGeminiVertexAi',
2199
3073
  values: [
2200
3074
  {
2201
3075
  displayName: 'Project',
@@ -2220,6 +3094,23 @@ exports.aiProperties = [
2220
3094
  }
2221
3095
  ]
2222
3096
  },
3097
+ {
3098
+ displayName: 'Google Gemini (AI Studio)',
3099
+ name: '_googleGeminiAiStudio',
3100
+ values: [
3101
+ {
3102
+ displayName: 'Api Key',
3103
+ name: 'apiKey',
3104
+ type: 'string',
3105
+ default: '',
3106
+ description: 'API key from Google AI Studio',
3107
+ required: true,
3108
+ typeOptions: {
3109
+ password: true
3110
+ }
3111
+ }
3112
+ ]
3113
+ },
2223
3114
  {
2224
3115
  displayName: 'Mistral AI',
2225
3116
  name: '_mistralAi',
@@ -2379,7 +3270,7 @@ exports.aiProperties = [
2379
3270
  name: 'useSystemCredentials',
2380
3271
  type: 'boolean',
2381
3272
  default: false,
2382
- description: 'Enables the paid service AI provider via Crowdin.\n\n__Note__: Set to true if `credentials` is not provided. Not supported for `custom_ai`, `x_ai`, `watsonx` and `deepseek` types.',
3273
+ description: 'Enables the paid service AI provider via Crowdin.\n\n__Note__: Set to true if `credentials` is not provided. Not supported for `custom_ai`, `x_ai`, `watsonx`, `deepseek` and `google_gemini_ai_studio` types.',
2383
3274
  routing: {
2384
3275
  send: {
2385
3276
  property: 'useSystemCredentials',
@@ -2813,7 +3704,7 @@ exports.aiProperties = [
2813
3704
  name: 'sourceLanguageId',
2814
3705
  type: 'options',
2815
3706
  default: '',
2816
- description: 'Source Language Identifier. Get via [List Supported Languages](#operation/api.languages.getMany)',
3707
+ description: 'Source Language Identifier. Get via [List Supported Languages](#operation/api.languages.getMany). If not specified, auto-detection will be used.',
2817
3708
  routing: {
2818
3709
  send: {
2819
3710
  property: 'sourceLanguageId',
@@ -3807,6 +4698,10 @@ exports.aiProperties = [
3807
4698
  name: 'google_gemini',
3808
4699
  value: 'google_gemini'
3809
4700
  },
4701
+ {
4702
+ name: 'google_gemini_ai_studio',
4703
+ value: 'google_gemini_ai_studio'
4704
+ },
3810
4705
  {
3811
4706
  name: 'mistral_ai',
3812
4707
  value: 'mistral_ai'
@@ -3894,8 +4789,8 @@ exports.aiProperties = [
3894
4789
  ]
3895
4790
  },
3896
4791
  {
3897
- name: '_googleGemini',
3898
- displayName: 'Google Gemini',
4792
+ name: '_googleGeminiVertexAi',
4793
+ displayName: 'Google Gemini (Vertex AI)',
3899
4794
  values: [
3900
4795
  {
3901
4796
  displayName: 'Project',
@@ -3920,6 +4815,23 @@ exports.aiProperties = [
3920
4815
  }
3921
4816
  ]
3922
4817
  },
4818
+ {
4819
+ name: '_googleGeminiAiStudio',
4820
+ displayName: 'Google Gemini (AI Studio)',
4821
+ values: [
4822
+ {
4823
+ displayName: 'Api Key',
4824
+ name: 'apiKey',
4825
+ type: 'string',
4826
+ default: '',
4827
+ description: 'API key from Google AI Studio',
4828
+ required: true,
4829
+ typeOptions: {
4830
+ password: true
4831
+ }
4832
+ }
4833
+ ]
4834
+ },
3923
4835
  {
3924
4836
  name: '_mistralAi',
3925
4837
  displayName: 'Mistral AI',
@@ -4050,7 +4962,7 @@ exports.aiProperties = [
4050
4962
  name: 'useSystemCredentials',
4051
4963
  type: 'boolean',
4052
4964
  default: false,
4053
- description: 'Enables the paid service AI provider via Crowdin.\n\n__Note__: Set to true if `credentials` is not provided. Not supported for `custom_ai`, `x_ai`, `watsonx` and `deepseek` types.'
4965
+ description: 'Enables the paid service AI provider via Crowdin.\n\n__Note__: Set to true if `credentials` is not provided. Not supported for `custom_ai`, `x_ai`, `watsonx`, `deepseek` and `google_gemini_ai_studio` types.'
4054
4966
  }
4055
4967
  ],
4056
4968
  routing: {