@crowdin/n8n-nodes-crowdin 0.10.0 → 0.12.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 (67) hide show
  1. package/dist/nodes/Crowdin/properties/crowdin/fileBased/ai.js +15 -289
  2. package/dist/nodes/Crowdin/properties/crowdin/fileBased/ai.js.map +1 -1
  3. package/dist/nodes/Crowdin/properties/crowdin/fileBased/glossaries.js +116 -65
  4. package/dist/nodes/Crowdin/properties/crowdin/fileBased/glossaries.js.map +1 -1
  5. package/dist/nodes/Crowdin/properties/crowdin/fileBased/index.js +35 -41
  6. package/dist/nodes/Crowdin/properties/crowdin/fileBased/index.js.map +1 -1
  7. package/dist/nodes/Crowdin/properties/crowdin/fileBased/reports.js +2 -2
  8. package/dist/nodes/Crowdin/properties/crowdin/fileBased/reports.js.map +1 -1
  9. package/dist/nodes/Crowdin/properties/crowdin/fileBased/sourceFiles.js +79 -1
  10. package/dist/nodes/Crowdin/properties/crowdin/fileBased/sourceFiles.js.map +1 -1
  11. package/dist/nodes/Crowdin/properties/crowdin/fileBased/tasks.js +272 -1819
  12. package/dist/nodes/Crowdin/properties/crowdin/fileBased/tasks.js.map +1 -1
  13. package/dist/nodes/Crowdin/properties/crowdin/fileBased/translations.js +1720 -50
  14. package/dist/nodes/Crowdin/properties/crowdin/fileBased/translations.js.map +1 -1
  15. package/dist/nodes/Crowdin/properties/crowdin/stringBased/ai.js +15 -289
  16. package/dist/nodes/Crowdin/properties/crowdin/stringBased/ai.js.map +1 -1
  17. package/dist/nodes/Crowdin/properties/crowdin/stringBased/glossaries.js +116 -65
  18. package/dist/nodes/Crowdin/properties/crowdin/stringBased/glossaries.js.map +1 -1
  19. package/dist/nodes/Crowdin/properties/crowdin/stringBased/index.js +35 -41
  20. package/dist/nodes/Crowdin/properties/crowdin/stringBased/index.js.map +1 -1
  21. package/dist/nodes/Crowdin/properties/crowdin/stringBased/reports.js +2 -2
  22. package/dist/nodes/Crowdin/properties/crowdin/stringBased/reports.js.map +1 -1
  23. package/dist/nodes/Crowdin/properties/crowdin/stringBased/tasks.js +273 -1820
  24. package/dist/nodes/Crowdin/properties/crowdin/stringBased/tasks.js.map +1 -1
  25. package/dist/nodes/Crowdin/properties/crowdin/stringBased/translations.js +1678 -33
  26. package/dist/nodes/Crowdin/properties/crowdin/stringBased/translations.js.map +1 -1
  27. package/dist/nodes/Crowdin/properties/enterprise/fileBased/ai.js +51 -283
  28. package/dist/nodes/Crowdin/properties/enterprise/fileBased/ai.js.map +1 -1
  29. package/dist/nodes/Crowdin/properties/enterprise/fileBased/glossaries.js +116 -65
  30. package/dist/nodes/Crowdin/properties/enterprise/fileBased/glossaries.js.map +1 -1
  31. package/dist/nodes/Crowdin/properties/enterprise/fileBased/index.js +19 -25
  32. package/dist/nodes/Crowdin/properties/enterprise/fileBased/index.js.map +1 -1
  33. package/dist/nodes/Crowdin/properties/enterprise/fileBased/reports.js +19 -19
  34. package/dist/nodes/Crowdin/properties/enterprise/fileBased/reports.js.map +1 -1
  35. package/dist/nodes/Crowdin/properties/enterprise/fileBased/sourceFiles.js +79 -1
  36. package/dist/nodes/Crowdin/properties/enterprise/fileBased/sourceFiles.js.map +1 -1
  37. package/dist/nodes/Crowdin/properties/enterprise/fileBased/tasks.js +64 -11
  38. package/dist/nodes/Crowdin/properties/enterprise/fileBased/tasks.js.map +1 -1
  39. package/dist/nodes/Crowdin/properties/enterprise/fileBased/translations.js +1746 -50
  40. package/dist/nodes/Crowdin/properties/enterprise/fileBased/translations.js.map +1 -1
  41. package/dist/nodes/Crowdin/properties/enterprise/stringBased/ai.js +51 -283
  42. package/dist/nodes/Crowdin/properties/enterprise/stringBased/ai.js.map +1 -1
  43. package/dist/nodes/Crowdin/properties/enterprise/stringBased/glossaries.js +116 -65
  44. package/dist/nodes/Crowdin/properties/enterprise/stringBased/glossaries.js.map +1 -1
  45. package/dist/nodes/Crowdin/properties/enterprise/stringBased/index.js +0 -6
  46. package/dist/nodes/Crowdin/properties/enterprise/stringBased/index.js.map +1 -1
  47. package/dist/nodes/Crowdin/properties/enterprise/stringBased/reports.js +19 -19
  48. package/dist/nodes/Crowdin/properties/enterprise/stringBased/reports.js.map +1 -1
  49. package/dist/nodes/Crowdin/properties/enterprise/stringBased/tasks.js +64 -11
  50. package/dist/nodes/Crowdin/properties/enterprise/stringBased/tasks.js.map +1 -1
  51. package/dist/nodes/Crowdin/properties/enterprise/stringBased/translations.js +1704 -33
  52. package/dist/nodes/Crowdin/properties/enterprise/stringBased/translations.js.map +1 -1
  53. package/dist/package.json +1 -1
  54. package/dist/tsconfig.tsbuildinfo +1 -1
  55. package/package.json +1 -1
  56. package/dist/nodes/Crowdin/properties/crowdin/fileBased/bundles.d.ts +0 -2
  57. package/dist/nodes/Crowdin/properties/crowdin/fileBased/bundles.js +0 -1453
  58. package/dist/nodes/Crowdin/properties/crowdin/fileBased/bundles.js.map +0 -1
  59. package/dist/nodes/Crowdin/properties/crowdin/stringBased/bundles.d.ts +0 -2
  60. package/dist/nodes/Crowdin/properties/crowdin/stringBased/bundles.js +0 -1453
  61. package/dist/nodes/Crowdin/properties/crowdin/stringBased/bundles.js.map +0 -1
  62. package/dist/nodes/Crowdin/properties/enterprise/fileBased/bundles.d.ts +0 -2
  63. package/dist/nodes/Crowdin/properties/enterprise/fileBased/bundles.js +0 -1453
  64. package/dist/nodes/Crowdin/properties/enterprise/fileBased/bundles.js.map +0 -1
  65. package/dist/nodes/Crowdin/properties/enterprise/stringBased/bundles.d.ts +0 -2
  66. package/dist/nodes/Crowdin/properties/enterprise/stringBased/bundles.js +0 -1453
  67. package/dist/nodes/Crowdin/properties/enterprise/stringBased/bundles.js.map +0 -1
@@ -16,6 +16,157 @@ exports.translationsProperties = [
16
16
  }
17
17
  },
18
18
  options: [
19
+ {
20
+ name: 'Bundle List Branches',
21
+ value: 'api.projects.bundles.branches.getMany',
22
+ action: 'Bundle List Branches',
23
+ description: '**Required scopes:** `project.source.file` (Read only).',
24
+ routing: {
25
+ request: {
26
+ method: 'GET',
27
+ url: '=/projects/{{$parameter["projectId"]}}/bundles/{{$parameter["bundleId"]}}/branches'
28
+ },
29
+ send: {
30
+ paginate: '={{$parameter["returnAll"]}}'
31
+ },
32
+ output: {
33
+ postReceive: [
34
+ {
35
+ type: 'rootProperty',
36
+ enabled: '={{!$parameter["returnAll"]}}',
37
+ properties: {
38
+ property: 'data'
39
+ }
40
+ }
41
+ ]
42
+ }
43
+ }
44
+ },
45
+ {
46
+ name: 'List Bundles',
47
+ value: 'api.projects.bundles.getMany',
48
+ action: 'List Bundles',
49
+ description: '**Required scopes:** `project.translation` (Read only).',
50
+ routing: {
51
+ request: {
52
+ method: 'GET',
53
+ url: '=/projects/{{$parameter["projectId"]}}/bundles'
54
+ },
55
+ send: {
56
+ paginate: '={{$parameter["returnAll"]}}'
57
+ },
58
+ output: {
59
+ postReceive: [
60
+ {
61
+ type: 'rootProperty',
62
+ enabled: '={{!$parameter["returnAll"]}}',
63
+ properties: {
64
+ property: 'data'
65
+ }
66
+ }
67
+ ]
68
+ }
69
+ }
70
+ },
71
+ {
72
+ name: 'Add Bundle',
73
+ value: 'api.projects.bundles.post',
74
+ action: 'Add Bundle',
75
+ description: '**Required scopes:** `project.source.file` (Read and Write).',
76
+ routing: {
77
+ request: {
78
+ method: 'POST',
79
+ url: '=/projects/{{$parameter["projectId"]}}/bundles'
80
+ }
81
+ }
82
+ },
83
+ {
84
+ name: 'Get Bundle',
85
+ value: 'api.projects.bundles.get',
86
+ action: 'Get Bundle',
87
+ description: '**Required scopes:** `project.source.file` (Read only).',
88
+ routing: {
89
+ request: {
90
+ method: 'GET',
91
+ url: '=/projects/{{$parameter["projectId"]}}/bundles/{{$parameter["bundleId"]}}'
92
+ }
93
+ }
94
+ },
95
+ {
96
+ name: 'Delete Bundle',
97
+ value: 'api.projects.bundles.delete',
98
+ action: 'Delete Bundle',
99
+ description: '**Required scopes:** `project.source.file` (Read and Write).',
100
+ routing: {
101
+ request: {
102
+ method: 'DELETE',
103
+ url: '=/projects/{{$parameter["projectId"]}}/bundles/{{$parameter["bundleId"]}}'
104
+ },
105
+ output: {
106
+ postReceive: [
107
+ {
108
+ type: 'set',
109
+ properties: {
110
+ value: '={{ { "success": true } }}'
111
+ }
112
+ }
113
+ ]
114
+ }
115
+ }
116
+ },
117
+ {
118
+ name: 'Edit Bundle',
119
+ value: 'api.projects.bundles.patch',
120
+ action: 'Edit Bundle',
121
+ description: '**Required scopes:** `project.source.file` (Read and Write).',
122
+ routing: {
123
+ request: {
124
+ method: 'PATCH',
125
+ url: '=/projects/{{$parameter["projectId"]}}/bundles/{{$parameter["bundleId"]}}'
126
+ },
127
+ send: {
128
+ preSend: [
129
+ preSend_1.transformToJsonPatch
130
+ ]
131
+ }
132
+ }
133
+ },
134
+ {
135
+ name: 'Download Bundle',
136
+ value: 'api.projects.bundles.exports.download.get',
137
+ action: 'Download Bundle',
138
+ description: '**Required scopes:** `project.translation` (Read only).',
139
+ routing: {
140
+ request: {
141
+ method: 'GET',
142
+ url: '=/projects/{{$parameter["projectId"]}}/bundles/{{$parameter["bundleId"]}}/exports/{{$parameter["exportId"]}}/download'
143
+ }
144
+ }
145
+ },
146
+ {
147
+ name: 'Export Bundle',
148
+ value: 'api.projects.bundles.exports.post',
149
+ action: 'Export Bundle',
150
+ description: '**Required scopes:** `project.translation` (Read only).',
151
+ routing: {
152
+ request: {
153
+ method: 'POST',
154
+ url: '=/projects/{{$parameter["projectId"]}}/bundles/{{$parameter["bundleId"]}}/exports'
155
+ }
156
+ }
157
+ },
158
+ {
159
+ name: 'Check Bundle Export Status',
160
+ value: 'api.projects.bundles.exports.get',
161
+ action: 'Check Bundle Export Status',
162
+ description: '**Required scopes:** `project.translation` (Read only).',
163
+ routing: {
164
+ request: {
165
+ method: 'GET',
166
+ url: '=/projects/{{$parameter["projectId"]}}/bundles/{{$parameter["bundleId"]}}/exports/{{$parameter["exportId"]}}'
167
+ }
168
+ }
169
+ },
19
170
  {
20
171
  name: 'List Pre-Translations',
21
172
  value: 'api.projects.pre-translations.getMany',
@@ -155,10 +306,10 @@ exports.translationsProperties = [
155
306
  }
156
307
  }
157
308
  ],
158
- default: 'api.projects.pre-translations.getMany'
309
+ default: 'api.projects.bundles.branches.getMany'
159
310
  },
160
311
  {
161
- displayName: 'GET /projects/{projectId}/pre-translations',
312
+ displayName: 'GET /projects/{projectId}/bundles/{bundleId}/branches',
162
313
  name: 'operation',
163
314
  type: 'notice',
164
315
  typeOptions: {
@@ -171,13 +322,13 @@ exports.translationsProperties = [
171
322
  'translations'
172
323
  ],
173
324
  operation: [
174
- 'api.projects.pre-translations.getMany'
325
+ 'api.projects.bundles.branches.getMany'
175
326
  ]
176
327
  }
177
328
  }
178
329
  },
179
330
  {
180
- displayName: 'POST /projects/{projectId}/pre-translations',
331
+ displayName: 'GET /projects/{projectId}/bundles',
181
332
  name: 'operation',
182
333
  type: 'notice',
183
334
  typeOptions: {
@@ -190,13 +341,13 @@ exports.translationsProperties = [
190
341
  'translations'
191
342
  ],
192
343
  operation: [
193
- 'api.projects.pre-translations.post'
344
+ 'api.projects.bundles.getMany'
194
345
  ]
195
346
  }
196
347
  }
197
348
  },
198
349
  {
199
- displayName: 'GET /projects/{projectId}/pre-translations/{preTranslationId}',
350
+ displayName: 'POST /projects/{projectId}/bundles',
200
351
  name: 'operation',
201
352
  type: 'notice',
202
353
  typeOptions: {
@@ -209,13 +360,13 @@ exports.translationsProperties = [
209
360
  'translations'
210
361
  ],
211
362
  operation: [
212
- 'api.projects.pre-translations.get'
363
+ 'api.projects.bundles.post'
213
364
  ]
214
365
  }
215
366
  }
216
367
  },
217
368
  {
218
- displayName: 'PATCH /projects/{projectId}/pre-translations/{preTranslationId}',
369
+ displayName: 'GET /projects/{projectId}/bundles/{bundleId}',
219
370
  name: 'operation',
220
371
  type: 'notice',
221
372
  typeOptions: {
@@ -228,13 +379,13 @@ exports.translationsProperties = [
228
379
  'translations'
229
380
  ],
230
381
  operation: [
231
- 'api.projects.pre-translations.patch'
382
+ 'api.projects.bundles.get'
232
383
  ]
233
384
  }
234
385
  }
235
386
  },
236
387
  {
237
- displayName: 'GET /projects/{projectId}/pre-translations/{preTranslationId}/report',
388
+ displayName: 'DELETE /projects/{projectId}/bundles/{bundleId}',
238
389
  name: 'operation',
239
390
  type: 'notice',
240
391
  typeOptions: {
@@ -247,13 +398,13 @@ exports.translationsProperties = [
247
398
  'translations'
248
399
  ],
249
400
  operation: [
250
- 'api.projects.pre-translations.report.getReport'
401
+ 'api.projects.bundles.delete'
251
402
  ]
252
403
  }
253
404
  }
254
405
  },
255
406
  {
256
- displayName: 'POST /projects/{projectId}/translations/validate-qa-checks',
407
+ displayName: 'PATCH /projects/{projectId}/bundles/{bundleId}',
257
408
  name: 'operation',
258
409
  type: 'notice',
259
410
  typeOptions: {
@@ -266,13 +417,13 @@ exports.translationsProperties = [
266
417
  'translations'
267
418
  ],
268
419
  operation: [
269
- 'api.projects.translations.validate-qa-checks.post'
420
+ 'api.projects.bundles.patch'
270
421
  ]
271
422
  }
272
423
  }
273
424
  },
274
425
  {
275
- displayName: 'POST /projects/{projectId}/translations/exports',
426
+ displayName: 'GET /projects/{projectId}/bundles/{bundleId}/exports/{exportId}/download',
276
427
  name: 'operation',
277
428
  type: 'notice',
278
429
  typeOptions: {
@@ -285,13 +436,13 @@ exports.translationsProperties = [
285
436
  'translations'
286
437
  ],
287
438
  operation: [
288
- 'api.projects.translations.exports.post'
439
+ 'api.projects.bundles.exports.download.get'
289
440
  ]
290
441
  }
291
442
  }
292
443
  },
293
444
  {
294
- displayName: 'POST /projects/{projectId}/translations/imports',
445
+ displayName: 'POST /projects/{projectId}/bundles/{bundleId}/exports',
295
446
  name: 'operation',
296
447
  type: 'notice',
297
448
  typeOptions: {
@@ -304,13 +455,146 @@ exports.translationsProperties = [
304
455
  'translations'
305
456
  ],
306
457
  operation: [
307
- 'api.projects.translations.imports'
458
+ 'api.projects.bundles.exports.post'
308
459
  ]
309
460
  }
310
461
  }
311
462
  },
312
463
  {
313
- displayName: 'GET /projects/{projectId}/translations/imports/{importTranslationId}',
464
+ displayName: 'GET /projects/{projectId}/bundles/{bundleId}/exports/{exportId}',
465
+ name: 'operation',
466
+ type: 'notice',
467
+ typeOptions: {
468
+ theme: 'info'
469
+ },
470
+ default: '',
471
+ displayOptions: {
472
+ show: {
473
+ resource: [
474
+ 'translations'
475
+ ],
476
+ operation: [
477
+ 'api.projects.bundles.exports.get'
478
+ ]
479
+ }
480
+ }
481
+ },
482
+ {
483
+ displayName: 'GET /projects/{projectId}/pre-translations',
484
+ name: 'operation',
485
+ type: 'notice',
486
+ typeOptions: {
487
+ theme: 'info'
488
+ },
489
+ default: '',
490
+ displayOptions: {
491
+ show: {
492
+ resource: [
493
+ 'translations'
494
+ ],
495
+ operation: [
496
+ 'api.projects.pre-translations.getMany'
497
+ ]
498
+ }
499
+ }
500
+ },
501
+ {
502
+ displayName: 'POST /projects/{projectId}/pre-translations',
503
+ name: 'operation',
504
+ type: 'notice',
505
+ typeOptions: {
506
+ theme: 'info'
507
+ },
508
+ default: '',
509
+ displayOptions: {
510
+ show: {
511
+ resource: [
512
+ 'translations'
513
+ ],
514
+ operation: [
515
+ 'api.projects.pre-translations.post'
516
+ ]
517
+ }
518
+ }
519
+ },
520
+ {
521
+ displayName: 'GET /projects/{projectId}/pre-translations/{preTranslationId}',
522
+ name: 'operation',
523
+ type: 'notice',
524
+ typeOptions: {
525
+ theme: 'info'
526
+ },
527
+ default: '',
528
+ displayOptions: {
529
+ show: {
530
+ resource: [
531
+ 'translations'
532
+ ],
533
+ operation: [
534
+ 'api.projects.pre-translations.get'
535
+ ]
536
+ }
537
+ }
538
+ },
539
+ {
540
+ displayName: 'PATCH /projects/{projectId}/pre-translations/{preTranslationId}',
541
+ name: 'operation',
542
+ type: 'notice',
543
+ typeOptions: {
544
+ theme: 'info'
545
+ },
546
+ default: '',
547
+ displayOptions: {
548
+ show: {
549
+ resource: [
550
+ 'translations'
551
+ ],
552
+ operation: [
553
+ 'api.projects.pre-translations.patch'
554
+ ]
555
+ }
556
+ }
557
+ },
558
+ {
559
+ displayName: 'GET /projects/{projectId}/pre-translations/{preTranslationId}/report',
560
+ name: 'operation',
561
+ type: 'notice',
562
+ typeOptions: {
563
+ theme: 'info'
564
+ },
565
+ default: '',
566
+ displayOptions: {
567
+ show: {
568
+ resource: [
569
+ 'translations'
570
+ ],
571
+ operation: [
572
+ 'api.projects.pre-translations.report.getReport'
573
+ ]
574
+ }
575
+ }
576
+ },
577
+ {
578
+ displayName: 'POST /projects/{projectId}/translations/validate-qa-checks',
579
+ name: 'operation',
580
+ type: 'notice',
581
+ typeOptions: {
582
+ theme: 'info'
583
+ },
584
+ default: '',
585
+ displayOptions: {
586
+ show: {
587
+ resource: [
588
+ 'translations'
589
+ ],
590
+ operation: [
591
+ 'api.projects.translations.validate-qa-checks.post'
592
+ ]
593
+ }
594
+ }
595
+ },
596
+ {
597
+ displayName: 'POST /projects/{projectId}/translations/exports',
314
598
  name: 'operation',
315
599
  type: 'notice',
316
600
  typeOptions: {
@@ -323,26 +607,1030 @@ exports.translationsProperties = [
323
607
  'translations'
324
608
  ],
325
609
  operation: [
326
- 'api.projects.translations.imports.get'
610
+ 'api.projects.translations.exports.post'
611
+ ]
612
+ }
613
+ }
614
+ },
615
+ {
616
+ displayName: 'POST /projects/{projectId}/translations/imports',
617
+ name: 'operation',
618
+ type: 'notice',
619
+ typeOptions: {
620
+ theme: 'info'
621
+ },
622
+ default: '',
623
+ displayOptions: {
624
+ show: {
625
+ resource: [
626
+ 'translations'
627
+ ],
628
+ operation: [
629
+ 'api.projects.translations.imports'
630
+ ]
631
+ }
632
+ }
633
+ },
634
+ {
635
+ displayName: 'GET /projects/{projectId}/translations/imports/{importTranslationId}',
636
+ name: 'operation',
637
+ type: 'notice',
638
+ typeOptions: {
639
+ theme: 'info'
640
+ },
641
+ default: '',
642
+ displayOptions: {
643
+ show: {
644
+ resource: [
645
+ 'translations'
646
+ ],
647
+ operation: [
648
+ 'api.projects.translations.imports.get'
649
+ ]
650
+ }
651
+ }
652
+ },
653
+ {
654
+ displayName: 'GET /projects/{projectId}/translations/imports/{importTranslationId}/report',
655
+ name: 'operation',
656
+ type: 'notice',
657
+ typeOptions: {
658
+ theme: 'info'
659
+ },
660
+ default: '',
661
+ displayOptions: {
662
+ show: {
663
+ resource: [
664
+ 'translations'
665
+ ],
666
+ operation: [
667
+ 'api.projects.translations.imports.report.get'
668
+ ]
669
+ }
670
+ }
671
+ },
672
+ {
673
+ displayName: 'Project Id',
674
+ name: 'projectId',
675
+ required: true,
676
+ description: 'Project Identifier. Get via [List Projects](#operation/api.projects.getMany)',
677
+ default: '',
678
+ type: 'options',
679
+ displayOptions: {
680
+ show: {
681
+ resource: [
682
+ 'translations'
683
+ ],
684
+ operation: [
685
+ 'api.projects.bundles.branches.getMany'
686
+ ]
687
+ }
688
+ },
689
+ typeOptions: {
690
+ loadOptionsMethod: 'getProjects'
691
+ }
692
+ },
693
+ {
694
+ displayName: 'Bundle Id',
695
+ name: 'bundleId',
696
+ required: true,
697
+ description: 'Bundle Identifier. Get via [List Bundles](#operation/api.projects.bundles.getMany)',
698
+ default: '',
699
+ type: 'options',
700
+ displayOptions: {
701
+ show: {
702
+ resource: [
703
+ 'translations'
704
+ ],
705
+ operation: [
706
+ 'api.projects.bundles.branches.getMany'
707
+ ]
708
+ }
709
+ },
710
+ typeOptions: {
711
+ loadOptionsMethod: 'getProjectBundles',
712
+ loadOptionsDependsOn: [
713
+ 'projectId'
714
+ ]
715
+ }
716
+ },
717
+ {
718
+ displayName: 'Limit',
719
+ name: 'limit',
720
+ description: 'Max number of results to return',
721
+ default: 50,
722
+ type: 'number',
723
+ routing: {
724
+ send: {
725
+ type: 'query',
726
+ property: 'limit',
727
+ value: '={{ typeof $value === \'number\' ? $value : undefined }}',
728
+ propertyInDotNotation: false
729
+ }
730
+ },
731
+ displayOptions: {
732
+ show: {
733
+ resource: [
734
+ 'translations'
735
+ ],
736
+ operation: [
737
+ 'api.projects.bundles.branches.getMany'
738
+ ],
739
+ returnAll: [
740
+ false
741
+ ]
742
+ }
743
+ },
744
+ typeOptions: {
745
+ minValue: 1
746
+ }
747
+ },
748
+ {
749
+ displayName: 'Project Id',
750
+ name: 'projectId',
751
+ required: true,
752
+ description: 'Project Identifier. Get via [List Projects](#operation/api.projects.getMany)',
753
+ default: '',
754
+ type: 'options',
755
+ displayOptions: {
756
+ show: {
757
+ resource: [
758
+ 'translations'
759
+ ],
760
+ operation: [
761
+ 'api.projects.bundles.getMany'
762
+ ]
763
+ }
764
+ },
765
+ typeOptions: {
766
+ loadOptionsMethod: 'getProjects'
767
+ }
768
+ },
769
+ {
770
+ displayName: 'Limit',
771
+ name: 'limit',
772
+ description: 'Max number of results to return',
773
+ default: 50,
774
+ type: 'number',
775
+ routing: {
776
+ send: {
777
+ type: 'query',
778
+ property: 'limit',
779
+ value: '={{ typeof $value === \'number\' ? $value : undefined }}',
780
+ propertyInDotNotation: false
781
+ }
782
+ },
783
+ displayOptions: {
784
+ show: {
785
+ resource: [
786
+ 'translations'
787
+ ],
788
+ operation: [
789
+ 'api.projects.bundles.getMany'
790
+ ],
791
+ returnAll: [
792
+ false
793
+ ]
794
+ }
795
+ },
796
+ typeOptions: {
797
+ minValue: 1
798
+ }
799
+ },
800
+ {
801
+ displayName: 'Project Id',
802
+ name: 'projectId',
803
+ required: true,
804
+ description: 'Project Identifier. Get via [List Projects](#operation/api.projects.getMany)',
805
+ default: '',
806
+ type: 'options',
807
+ displayOptions: {
808
+ show: {
809
+ resource: [
810
+ 'translations'
811
+ ],
812
+ operation: [
813
+ 'api.projects.bundles.post'
814
+ ]
815
+ }
816
+ },
817
+ typeOptions: {
818
+ loadOptionsMethod: 'getProjects'
819
+ }
820
+ },
821
+ {
822
+ displayName: 'Name',
823
+ required: true,
824
+ name: 'name',
825
+ type: 'string',
826
+ default: '',
827
+ description: 'Defines name',
828
+ routing: {
829
+ send: {
830
+ property: 'name',
831
+ propertyInDotNotation: false,
832
+ type: 'body',
833
+ value: '={{ $value || undefined }}'
834
+ }
835
+ },
836
+ displayOptions: {
837
+ show: {
838
+ resource: [
839
+ 'translations'
840
+ ],
841
+ operation: [
842
+ 'api.projects.bundles.post'
843
+ ]
844
+ }
845
+ },
846
+ placeholder: 'Resx bundle'
847
+ },
848
+ {
849
+ displayName: 'Format',
850
+ name: 'format',
851
+ type: 'string',
852
+ default: '',
853
+ description: 'Defines export file format. If not provided, files will be exported in their original format.\n\n__Note:__ Required for strings-based projects',
854
+ routing: {
855
+ send: {
856
+ property: 'format',
857
+ propertyInDotNotation: false,
858
+ type: 'body',
859
+ value: '={{ $value || undefined }}'
860
+ }
861
+ },
862
+ displayOptions: {
863
+ show: {
864
+ resource: [
865
+ 'translations'
866
+ ],
867
+ operation: [
868
+ 'api.projects.bundles.post'
869
+ ]
870
+ }
871
+ },
872
+ placeholder: 'crowdin-resx'
873
+ },
874
+ {
875
+ displayName: 'Source Patterns',
876
+ required: true,
877
+ name: 'sourcePatterns',
878
+ type: 'fixedCollection',
879
+ default: {},
880
+ routing: {
881
+ send: {
882
+ property: 'sourcePatterns',
883
+ propertyInDotNotation: false,
884
+ type: 'body',
885
+ value: '={{ $value.items?.map(i => i._value) || undefined }}'
886
+ }
887
+ },
888
+ displayOptions: {
889
+ show: {
890
+ resource: [
891
+ 'translations'
892
+ ],
893
+ operation: [
894
+ 'api.projects.bundles.post'
895
+ ]
896
+ }
897
+ },
898
+ typeOptions: {
899
+ multipleValues: true
900
+ },
901
+ placeholder: 'Add Item',
902
+ options: [
903
+ {
904
+ displayName: 'Items',
905
+ name: 'items',
906
+ values: [
907
+ {
908
+ displayName: 'Value',
909
+ name: '_value',
910
+ type: 'string',
911
+ default: ''
912
+ }
913
+ ]
914
+ }
915
+ ]
916
+ },
917
+ {
918
+ displayName: 'Ignore Patterns',
919
+ name: 'ignorePatterns',
920
+ type: 'fixedCollection',
921
+ default: {},
922
+ routing: {
923
+ send: {
924
+ property: 'ignorePatterns',
925
+ propertyInDotNotation: false,
926
+ type: 'body',
927
+ value: '={{ $value.items?.map(i => i._value) || undefined }}'
928
+ }
929
+ },
930
+ displayOptions: {
931
+ show: {
932
+ resource: [
933
+ 'translations'
934
+ ],
935
+ operation: [
936
+ 'api.projects.bundles.post'
937
+ ]
938
+ }
939
+ },
940
+ typeOptions: {
941
+ multipleValues: true
942
+ },
943
+ placeholder: 'Add Item',
944
+ options: [
945
+ {
946
+ displayName: 'Items',
947
+ name: 'items',
948
+ values: [
949
+ {
950
+ displayName: 'Value',
951
+ name: '_value',
952
+ type: 'string',
953
+ default: ''
954
+ }
955
+ ]
956
+ }
957
+ ]
958
+ },
959
+ {
960
+ displayName: 'Export Pattern',
961
+ name: 'exportPattern',
962
+ type: 'string',
963
+ default: '',
964
+ description: 'Bundle export pattern. Defines bundle name in resulting translations bundle. **Required** if `format` is specified. If `format` is not specified, uses default pattern based on file structure\n\n__Note:__ Can\'t contain `: * ? " < > |` symbols',
965
+ routing: {
966
+ send: {
967
+ property: 'exportPattern',
968
+ propertyInDotNotation: false,
969
+ type: 'body',
970
+ value: '={{ $value || undefined }}'
971
+ }
972
+ },
973
+ displayOptions: {
974
+ show: {
975
+ resource: [
976
+ 'translations'
977
+ ],
978
+ operation: [
979
+ 'api.projects.bundles.post'
980
+ ]
981
+ }
982
+ },
983
+ placeholder: 'strings-%two_letter_code%.resx'
984
+ },
985
+ {
986
+ displayName: 'Is Multilingual',
987
+ name: 'isMultilingual',
988
+ type: 'boolean',
989
+ default: false,
990
+ description: 'Export translations in multilingual file',
991
+ routing: {
992
+ send: {
993
+ property: 'isMultilingual',
994
+ propertyInDotNotation: false,
995
+ type: 'body',
996
+ value: '={{ $value }}'
997
+ }
998
+ },
999
+ displayOptions: {
1000
+ show: {
1001
+ resource: [
1002
+ 'translations'
1003
+ ],
1004
+ operation: [
1005
+ 'api.projects.bundles.post'
1006
+ ]
1007
+ }
1008
+ }
1009
+ },
1010
+ {
1011
+ displayName: 'Include Project Source Language',
1012
+ name: 'includeProjectSourceLanguage',
1013
+ type: 'boolean',
1014
+ default: false,
1015
+ description: 'Add project source language to bundle',
1016
+ routing: {
1017
+ send: {
1018
+ property: 'includeProjectSourceLanguage',
1019
+ propertyInDotNotation: false,
1020
+ type: 'body',
1021
+ value: '={{ $value }}'
1022
+ }
1023
+ },
1024
+ displayOptions: {
1025
+ show: {
1026
+ resource: [
1027
+ 'translations'
1028
+ ],
1029
+ operation: [
1030
+ 'api.projects.bundles.post'
1031
+ ]
1032
+ }
1033
+ }
1034
+ },
1035
+ {
1036
+ displayName: 'Source Language Export Pattern',
1037
+ name: 'sourceLanguageExportPattern',
1038
+ type: 'string',
1039
+ default: '',
1040
+ description: 'Source language export pattern. Works only when `includeProjectSourceLanguage` is enabled.\n\n__Note:__ Can\'t contain `: * ? " < > |` symbols',
1041
+ routing: {
1042
+ send: {
1043
+ property: 'sourceLanguageExportPattern',
1044
+ propertyInDotNotation: false,
1045
+ type: 'body',
1046
+ value: '={{ $value || undefined }}'
1047
+ }
1048
+ },
1049
+ displayOptions: {
1050
+ show: {
1051
+ resource: [
1052
+ 'translations'
1053
+ ],
1054
+ operation: [
1055
+ 'api.projects.bundles.post'
1056
+ ]
1057
+ }
1058
+ },
1059
+ placeholder: 'strings-%two_letter_code%.resx'
1060
+ },
1061
+ {
1062
+ displayName: 'Include In Context Pseudo Language',
1063
+ name: 'includeInContextPseudoLanguage',
1064
+ type: 'boolean',
1065
+ default: true,
1066
+ description: 'Add In-Context pseudo-language to bundle',
1067
+ routing: {
1068
+ send: {
1069
+ property: 'includeInContextPseudoLanguage',
1070
+ propertyInDotNotation: false,
1071
+ type: 'body',
1072
+ value: '={{ $value }}'
1073
+ }
1074
+ },
1075
+ displayOptions: {
1076
+ show: {
1077
+ resource: [
1078
+ 'translations'
1079
+ ],
1080
+ operation: [
1081
+ 'api.projects.bundles.post'
1082
+ ]
1083
+ }
1084
+ }
1085
+ },
1086
+ {
1087
+ displayName: 'Label Ids',
1088
+ name: 'labelIds',
1089
+ type: 'multiOptions',
1090
+ default: [],
1091
+ description: 'Label Identifiers. Get via [List Labels](#operation/api.projects.labels.getMany)\n\n__Note:__ Can\'t be used when `format` is `null`',
1092
+ routing: {
1093
+ send: {
1094
+ property: 'labelIds',
1095
+ propertyInDotNotation: false,
1096
+ type: 'body',
1097
+ value: '={{ $value }}'
1098
+ }
1099
+ },
1100
+ displayOptions: {
1101
+ show: {
1102
+ resource: [
1103
+ 'translations'
1104
+ ],
1105
+ operation: [
1106
+ 'api.projects.bundles.post'
1107
+ ]
1108
+ }
1109
+ },
1110
+ typeOptions: {
1111
+ loadOptionsMethod: 'getProjectLabelsMulti',
1112
+ loadOptionsDependsOn: [
1113
+ 'projectId'
1114
+ ]
1115
+ }
1116
+ },
1117
+ {
1118
+ displayName: 'Exclude Label Ids',
1119
+ name: 'excludeLabelIds',
1120
+ type: 'multiOptions',
1121
+ default: [],
1122
+ description: 'Label Identifiers. Get via [List Labels](#operation/api.projects.labels.getMany)\n\n__Note:__ Can\'t be used when `format` is `null`',
1123
+ routing: {
1124
+ send: {
1125
+ property: 'excludeLabelIds',
1126
+ propertyInDotNotation: false,
1127
+ type: 'body',
1128
+ value: '={{ $value }}'
1129
+ }
1130
+ },
1131
+ displayOptions: {
1132
+ show: {
1133
+ resource: [
1134
+ 'translations'
1135
+ ],
1136
+ operation: [
1137
+ 'api.projects.bundles.post'
1138
+ ]
1139
+ }
1140
+ },
1141
+ typeOptions: {
1142
+ loadOptionsMethod: 'getProjectLabelsMulti',
1143
+ loadOptionsDependsOn: [
1144
+ 'projectId'
1145
+ ]
1146
+ }
1147
+ },
1148
+ {
1149
+ displayName: 'Label Match Rule',
1150
+ name: 'labelMatchRule',
1151
+ type: 'options',
1152
+ default: '',
1153
+ description: 'Match rule for labels:\n- "all" - all labels must be present in string\n- "any" - any of the labels must be present in string\n\n __Note:__ Can only be used when `labelIds` parameter is provided',
1154
+ options: [
1155
+ {
1156
+ name: '-',
1157
+ value: ''
1158
+ },
1159
+ {
1160
+ name: 'all',
1161
+ value: 'all'
1162
+ },
1163
+ {
1164
+ name: 'any',
1165
+ value: 'any'
1166
+ }
1167
+ ],
1168
+ routing: {
1169
+ send: {
1170
+ property: 'labelMatchRule',
1171
+ propertyInDotNotation: false,
1172
+ type: 'body',
1173
+ value: '={{ $value || undefined }}'
1174
+ }
1175
+ },
1176
+ displayOptions: {
1177
+ show: {
1178
+ resource: [
1179
+ 'translations'
1180
+ ],
1181
+ operation: [
1182
+ 'api.projects.bundles.post'
1183
+ ]
1184
+ }
1185
+ }
1186
+ },
1187
+ {
1188
+ displayName: 'Exclude Label Match Rule',
1189
+ name: 'excludeLabelMatchRule',
1190
+ type: 'options',
1191
+ default: '',
1192
+ description: 'Match rule for excluded labels:\n - "all" - all labels must be present in string\n - "any" - any of the labels must be present in string\n\n __Note:__ Can only be used when `excludeLabelIds` parameter is provided',
1193
+ options: [
1194
+ {
1195
+ name: '-',
1196
+ value: ''
1197
+ },
1198
+ {
1199
+ name: 'all',
1200
+ value: 'all'
1201
+ },
1202
+ {
1203
+ name: 'any',
1204
+ value: 'any'
1205
+ }
1206
+ ],
1207
+ routing: {
1208
+ send: {
1209
+ property: 'excludeLabelMatchRule',
1210
+ propertyInDotNotation: false,
1211
+ type: 'body',
1212
+ value: '={{ $value || undefined }}'
1213
+ }
1214
+ },
1215
+ displayOptions: {
1216
+ show: {
1217
+ resource: [
1218
+ 'translations'
1219
+ ],
1220
+ operation: [
1221
+ 'api.projects.bundles.post'
1222
+ ]
1223
+ }
1224
+ }
1225
+ },
1226
+ {
1227
+ displayName: 'Language Ids',
1228
+ name: 'languageIds',
1229
+ type: 'multiOptions',
1230
+ default: [],
1231
+ description: 'Language Identifiers. Get via [List Supported Languages](#operation/api.languages.getMany). If provided, bundle will only export specified languages. If not provided, bundle will export all project target languages.',
1232
+ routing: {
1233
+ send: {
1234
+ property: 'languageIds',
1235
+ propertyInDotNotation: false,
1236
+ type: 'body',
1237
+ value: '={{ $value }}'
1238
+ }
1239
+ },
1240
+ displayOptions: {
1241
+ show: {
1242
+ resource: [
1243
+ 'translations'
1244
+ ],
1245
+ operation: [
1246
+ 'api.projects.bundles.post'
1247
+ ]
1248
+ }
1249
+ },
1250
+ typeOptions: {
1251
+ loadOptionsMethod: 'getLanguagesMulti'
1252
+ }
1253
+ },
1254
+ {
1255
+ displayName: 'Project Id',
1256
+ name: 'projectId',
1257
+ required: true,
1258
+ description: 'Project Identifier. Get via [List Projects](#operation/api.projects.getMany)',
1259
+ default: '',
1260
+ type: 'options',
1261
+ displayOptions: {
1262
+ show: {
1263
+ resource: [
1264
+ 'translations'
1265
+ ],
1266
+ operation: [
1267
+ 'api.projects.bundles.get'
1268
+ ]
1269
+ }
1270
+ },
1271
+ typeOptions: {
1272
+ loadOptionsMethod: 'getProjects'
1273
+ }
1274
+ },
1275
+ {
1276
+ displayName: 'Bundle Id',
1277
+ name: 'bundleId',
1278
+ required: true,
1279
+ description: 'Bundle Identifier. Get via [List Bundles](#operation/api.projects.bundles.getMany)',
1280
+ default: '',
1281
+ type: 'options',
1282
+ displayOptions: {
1283
+ show: {
1284
+ resource: [
1285
+ 'translations'
1286
+ ],
1287
+ operation: [
1288
+ 'api.projects.bundles.get'
1289
+ ]
1290
+ }
1291
+ },
1292
+ typeOptions: {
1293
+ loadOptionsMethod: 'getProjectBundles',
1294
+ loadOptionsDependsOn: [
1295
+ 'projectId'
1296
+ ]
1297
+ }
1298
+ },
1299
+ {
1300
+ displayName: 'Project Id',
1301
+ name: 'projectId',
1302
+ required: true,
1303
+ description: 'Project Identifier. Get via [List Projects](#operation/api.projects.getMany)',
1304
+ default: '',
1305
+ type: 'options',
1306
+ displayOptions: {
1307
+ show: {
1308
+ resource: [
1309
+ 'translations'
1310
+ ],
1311
+ operation: [
1312
+ 'api.projects.bundles.delete'
1313
+ ]
1314
+ }
1315
+ },
1316
+ typeOptions: {
1317
+ loadOptionsMethod: 'getProjects'
1318
+ }
1319
+ },
1320
+ {
1321
+ displayName: 'Bundle Id',
1322
+ name: 'bundleId',
1323
+ required: true,
1324
+ description: 'Bundle Identifier. Get via [List Bundles](#operation/api.projects.bundles.getMany)',
1325
+ default: '',
1326
+ type: 'options',
1327
+ displayOptions: {
1328
+ show: {
1329
+ resource: [
1330
+ 'translations'
1331
+ ],
1332
+ operation: [
1333
+ 'api.projects.bundles.delete'
1334
+ ]
1335
+ }
1336
+ },
1337
+ typeOptions: {
1338
+ loadOptionsMethod: 'getProjectBundles',
1339
+ loadOptionsDependsOn: [
1340
+ 'projectId'
1341
+ ]
1342
+ }
1343
+ },
1344
+ {
1345
+ displayName: 'Project Id',
1346
+ name: 'projectId',
1347
+ required: true,
1348
+ description: 'Project Identifier. Get via [List Projects](#operation/api.projects.getMany)',
1349
+ default: '',
1350
+ type: 'options',
1351
+ displayOptions: {
1352
+ show: {
1353
+ resource: [
1354
+ 'translations'
1355
+ ],
1356
+ operation: [
1357
+ 'api.projects.bundles.patch'
1358
+ ]
1359
+ }
1360
+ },
1361
+ typeOptions: {
1362
+ loadOptionsMethod: 'getProjects'
1363
+ }
1364
+ },
1365
+ {
1366
+ displayName: 'Bundle Id',
1367
+ name: 'bundleId',
1368
+ required: true,
1369
+ description: 'Bundle Identifier. Get via [List Bundles](#operation/api.projects.bundles.getMany)',
1370
+ default: '',
1371
+ type: 'options',
1372
+ displayOptions: {
1373
+ show: {
1374
+ resource: [
1375
+ 'translations'
1376
+ ],
1377
+ operation: [
1378
+ 'api.projects.bundles.patch'
1379
+ ]
1380
+ }
1381
+ },
1382
+ typeOptions: {
1383
+ loadOptionsMethod: 'getProjectBundles',
1384
+ loadOptionsDependsOn: [
1385
+ 'projectId'
1386
+ ]
1387
+ }
1388
+ },
1389
+ {
1390
+ displayName: 'Project Id',
1391
+ name: 'projectId',
1392
+ required: true,
1393
+ description: 'Project Identifier. Get via [List Projects](#operation/api.projects.getMany)',
1394
+ default: '',
1395
+ type: 'options',
1396
+ displayOptions: {
1397
+ show: {
1398
+ resource: [
1399
+ 'translations'
1400
+ ],
1401
+ operation: [
1402
+ 'api.projects.bundles.exports.download.get'
1403
+ ]
1404
+ }
1405
+ },
1406
+ typeOptions: {
1407
+ loadOptionsMethod: 'getProjects'
1408
+ }
1409
+ },
1410
+ {
1411
+ displayName: 'Bundle Id',
1412
+ name: 'bundleId',
1413
+ required: true,
1414
+ description: 'Bundle Identifier. Get via [List Bundles](#operation/api.projects.bundles.getMany)',
1415
+ default: '',
1416
+ type: 'options',
1417
+ displayOptions: {
1418
+ show: {
1419
+ resource: [
1420
+ 'translations'
1421
+ ],
1422
+ operation: [
1423
+ 'api.projects.bundles.exports.download.get'
1424
+ ]
1425
+ }
1426
+ },
1427
+ typeOptions: {
1428
+ loadOptionsMethod: 'getProjectBundles',
1429
+ loadOptionsDependsOn: [
1430
+ 'projectId'
1431
+ ]
1432
+ }
1433
+ },
1434
+ {
1435
+ displayName: 'Export Id',
1436
+ name: 'exportId',
1437
+ required: true,
1438
+ description: 'Export Identifier, consists of 36 characters. Get via [Export Bundle](#operation/api.projects.bundles.exports.post)',
1439
+ default: '',
1440
+ type: 'string',
1441
+ displayOptions: {
1442
+ show: {
1443
+ resource: [
1444
+ 'translations'
1445
+ ],
1446
+ operation: [
1447
+ 'api.projects.bundles.exports.download.get'
1448
+ ]
1449
+ }
1450
+ }
1451
+ },
1452
+ {
1453
+ displayName: 'Project Id',
1454
+ name: 'projectId',
1455
+ required: true,
1456
+ description: 'Project Identifier. Get via [List Projects](#operation/api.projects.getMany)',
1457
+ default: '',
1458
+ type: 'options',
1459
+ displayOptions: {
1460
+ show: {
1461
+ resource: [
1462
+ 'translations'
1463
+ ],
1464
+ operation: [
1465
+ 'api.projects.bundles.exports.post'
1466
+ ]
1467
+ }
1468
+ },
1469
+ typeOptions: {
1470
+ loadOptionsMethod: 'getProjects'
1471
+ }
1472
+ },
1473
+ {
1474
+ displayName: 'Bundle Id',
1475
+ name: 'bundleId',
1476
+ required: true,
1477
+ description: 'Bundle Identifier. Get via [List Bundles](#operation/api.projects.bundles.getMany)',
1478
+ default: '',
1479
+ type: 'options',
1480
+ displayOptions: {
1481
+ show: {
1482
+ resource: [
1483
+ 'translations'
1484
+ ],
1485
+ operation: [
1486
+ 'api.projects.bundles.exports.post'
1487
+ ]
1488
+ }
1489
+ },
1490
+ typeOptions: {
1491
+ loadOptionsMethod: 'getProjectBundles',
1492
+ loadOptionsDependsOn: [
1493
+ 'projectId'
1494
+ ]
1495
+ }
1496
+ },
1497
+ {
1498
+ displayName: 'Target Language Ids',
1499
+ name: 'targetLanguageIds',
1500
+ type: 'multiOptions',
1501
+ default: [],
1502
+ description: 'Specify target languages for export. Get via [List Supported Languages](#operation/api.languages.getMany)\n\n * Leave this field empty to export all target languages',
1503
+ routing: {
1504
+ send: {
1505
+ property: 'targetLanguageIds',
1506
+ propertyInDotNotation: false,
1507
+ type: 'body',
1508
+ value: '={{ $value }}'
1509
+ }
1510
+ },
1511
+ displayOptions: {
1512
+ show: {
1513
+ resource: [
1514
+ 'translations'
1515
+ ],
1516
+ operation: [
1517
+ 'api.projects.bundles.exports.post'
1518
+ ]
1519
+ }
1520
+ },
1521
+ typeOptions: {
1522
+ loadOptionsMethod: 'getLanguagesMulti'
1523
+ }
1524
+ },
1525
+ {
1526
+ displayName: 'Skip Untranslated Strings',
1527
+ name: 'skipUntranslatedStrings',
1528
+ type: 'boolean',
1529
+ default: false,
1530
+ description: 'Defines whether to export only translated strings',
1531
+ routing: {
1532
+ send: {
1533
+ property: 'skipUntranslatedStrings',
1534
+ propertyInDotNotation: false,
1535
+ type: 'body',
1536
+ value: '={{ $value }}'
1537
+ }
1538
+ },
1539
+ displayOptions: {
1540
+ show: {
1541
+ resource: [
1542
+ 'translations'
1543
+ ],
1544
+ operation: [
1545
+ 'api.projects.bundles.exports.post'
1546
+ ]
1547
+ }
1548
+ }
1549
+ },
1550
+ {
1551
+ displayName: 'Export Approved Only',
1552
+ name: 'exportApprovedOnly',
1553
+ type: 'boolean',
1554
+ default: false,
1555
+ description: 'Defines whether to export only approved strings\n\n[More info](https://support.crowdin.com/project-settings/export/)',
1556
+ routing: {
1557
+ send: {
1558
+ property: 'exportApprovedOnly',
1559
+ propertyInDotNotation: false,
1560
+ type: 'body',
1561
+ value: '={{ $value }}'
1562
+ }
1563
+ },
1564
+ displayOptions: {
1565
+ show: {
1566
+ resource: [
1567
+ 'translations'
1568
+ ],
1569
+ operation: [
1570
+ 'api.projects.bundles.exports.post'
1571
+ ]
1572
+ }
1573
+ }
1574
+ },
1575
+ {
1576
+ displayName: 'Project Id',
1577
+ name: 'projectId',
1578
+ required: true,
1579
+ description: 'Project Identifier. Get via [List Projects](#operation/api.projects.getMany)',
1580
+ default: '',
1581
+ type: 'options',
1582
+ displayOptions: {
1583
+ show: {
1584
+ resource: [
1585
+ 'translations'
1586
+ ],
1587
+ operation: [
1588
+ 'api.projects.bundles.exports.get'
1589
+ ]
1590
+ }
1591
+ },
1592
+ typeOptions: {
1593
+ loadOptionsMethod: 'getProjects'
1594
+ }
1595
+ },
1596
+ {
1597
+ displayName: 'Bundle Id',
1598
+ name: 'bundleId',
1599
+ required: true,
1600
+ description: 'Bundle Identifier. Get via [List Bundles](#operation/api.projects.bundles.getMany)',
1601
+ default: '',
1602
+ type: 'options',
1603
+ displayOptions: {
1604
+ show: {
1605
+ resource: [
1606
+ 'translations'
1607
+ ],
1608
+ operation: [
1609
+ 'api.projects.bundles.exports.get'
327
1610
  ]
328
1611
  }
1612
+ },
1613
+ typeOptions: {
1614
+ loadOptionsMethod: 'getProjectBundles',
1615
+ loadOptionsDependsOn: [
1616
+ 'projectId'
1617
+ ]
329
1618
  }
330
1619
  },
331
1620
  {
332
- displayName: 'GET /projects/{projectId}/translations/imports/{importTranslationId}/report',
333
- name: 'operation',
334
- type: 'notice',
335
- typeOptions: {
336
- theme: 'info'
337
- },
1621
+ displayName: 'Export Id',
1622
+ name: 'exportId',
1623
+ required: true,
1624
+ description: 'Export Identifier, consists of 36 characters. Get via [Export Bundle](#operation/api.projects.bundles.exports.post)',
338
1625
  default: '',
1626
+ type: 'string',
339
1627
  displayOptions: {
340
1628
  show: {
341
1629
  resource: [
342
1630
  'translations'
343
1631
  ],
344
1632
  operation: [
345
- 'api.projects.translations.imports.report.get'
1633
+ 'api.projects.bundles.exports.get'
346
1634
  ]
347
1635
  }
348
1636
  }
@@ -704,7 +1992,7 @@ exports.translationsProperties = [
704
1992
  name: 'duplicateTranslations',
705
1993
  type: 'boolean',
706
1994
  default: false,
707
- description: 'Adds translations even if the same translation already exists. Default is `false`',
1995
+ description: 'Adds translations even if the same translation already exists. Default is `false`.\n\n__Note:__ Cannot be used when `replaceTranslationsOption` is `all` (replacing all translations already overrides duplicate handling).',
708
1996
  routing: {
709
1997
  send: {
710
1998
  property: 'duplicateTranslations',
@@ -729,7 +2017,7 @@ exports.translationsProperties = [
729
2017
  name: 'skipApprovedTranslations',
730
2018
  type: 'boolean',
731
2019
  default: false,
732
- description: 'Skip approved translations. Default is `false`\n\n__Note:__ Works only with TM pre-translation method',
2020
+ description: 'Skip strings that already have approved translations. Default is `false`.\n\n__Note:__ Cannot be used together with `resetApprovalStatus`.',
733
2021
  routing: {
734
2022
  send: {
735
2023
  property: 'skipApprovedTranslations',
@@ -750,14 +2038,126 @@ exports.translationsProperties = [
750
2038
  }
751
2039
  },
752
2040
  {
753
- displayName: 'Translate Untranslated Only',
754
- name: 'translateUntranslatedOnly',
2041
+ displayName: 'Scope',
2042
+ name: 'scope',
2043
+ type: 'options',
2044
+ default: '',
2045
+ description: 'Which strings to apply pre-translation to. Default is `untranslated`. Available values:\n- \'untranslated\' – strings without an existing translation (default)\n- \'translated\' – strings that already have a translation (re-translation)\n- \'all\' – both untranslated and translated strings\n\n__Note:__ Cannot be used together with the deprecated `translateUntranslatedOnly`.',
2046
+ options: [
2047
+ {
2048
+ name: '-',
2049
+ value: ''
2050
+ },
2051
+ {
2052
+ name: 'untranslated',
2053
+ value: 'untranslated'
2054
+ },
2055
+ {
2056
+ name: 'translated',
2057
+ value: 'translated'
2058
+ },
2059
+ {
2060
+ name: 'all',
2061
+ value: 'all'
2062
+ }
2063
+ ],
2064
+ routing: {
2065
+ send: {
2066
+ property: 'scope',
2067
+ propertyInDotNotation: false,
2068
+ type: 'body',
2069
+ value: '={{ $value || undefined }}'
2070
+ }
2071
+ },
2072
+ displayOptions: {
2073
+ show: {
2074
+ resource: [
2075
+ 'translations'
2076
+ ],
2077
+ operation: [
2078
+ 'api.projects.pre-translations.post'
2079
+ ]
2080
+ }
2081
+ }
2082
+ },
2083
+ {
2084
+ displayName: 'Translation Modified Before',
2085
+ name: 'dateTime:translationModifiedBefore',
2086
+ type: 'dateTime',
2087
+ default: '',
2088
+ description: 'Re-translates only if a string\'s current translation was modified prior to this date. Useful after modifying contextual resources like screenshots, style guides, or glossaries.\n\n__Note:__ Requires `scope` to be `translated` or `all`. Cannot be used with `scope: "untranslated"` or `translateUntranslatedOnly: true`.',
2089
+ routing: {
2090
+ send: {
2091
+ property: 'translationModifiedBefore',
2092
+ propertyInDotNotation: false,
2093
+ type: 'body',
2094
+ value: '={{ $value || undefined }}'
2095
+ }
2096
+ },
2097
+ displayOptions: {
2098
+ show: {
2099
+ resource: [
2100
+ 'translations'
2101
+ ],
2102
+ operation: [
2103
+ 'api.projects.pre-translations.post'
2104
+ ]
2105
+ }
2106
+ },
2107
+ placeholder: '2026-01-01T00:00:00+00:00'
2108
+ },
2109
+ {
2110
+ displayName: 'Replace Translations Option',
2111
+ name: 'replaceTranslationsOption',
2112
+ type: 'options',
2113
+ default: '',
2114
+ description: 'Defines whether to replace existing translations with new pre-translations. Default is `none`. Available values:\n- \'none\' – add the new translation alongside existing ones (default)\n- \'autoTranslated\' – replace auto-generated translations (TM, MT, AI). Human translations are kept\n- \'all\' – replace all existing translations\n\n__Note:__ Values other than `none` require `scope` to be `translated` or `all` (cannot be combined with `scope: "untranslated"` or `translateUntranslatedOnly: true`).',
2115
+ options: [
2116
+ {
2117
+ name: '-',
2118
+ value: ''
2119
+ },
2120
+ {
2121
+ name: 'none',
2122
+ value: 'none'
2123
+ },
2124
+ {
2125
+ name: 'autoTranslated',
2126
+ value: 'autoTranslated'
2127
+ },
2128
+ {
2129
+ name: 'all',
2130
+ value: 'all'
2131
+ }
2132
+ ],
2133
+ routing: {
2134
+ send: {
2135
+ property: 'replaceTranslationsOption',
2136
+ propertyInDotNotation: false,
2137
+ type: 'body',
2138
+ value: '={{ $value || undefined }}'
2139
+ }
2140
+ },
2141
+ displayOptions: {
2142
+ show: {
2143
+ resource: [
2144
+ 'translations'
2145
+ ],
2146
+ operation: [
2147
+ 'api.projects.pre-translations.post'
2148
+ ]
2149
+ }
2150
+ }
2151
+ },
2152
+ {
2153
+ displayName: 'Reset Approval Status',
2154
+ name: 'resetApprovalStatus',
755
2155
  type: 'boolean',
756
- default: true,
757
- description: 'Applies pre-translation for untranslated strings only. Default is `true`',
2156
+ default: false,
2157
+ description: 'Removes approval on existing translations when applying pre-translations. Default is `false`.\n\n__Note:__ Requires `scope` to be `translated` or `all`. Cannot be used together with `skipApprovedTranslations`, `autoApproveOption` (any value other than `none`), or when `replaceTranslationsOption` is `all` (replaced translations lose approval automatically). Cannot be used with `scope: "untranslated"` or `translateUntranslatedOnly: true`.',
758
2158
  routing: {
759
2159
  send: {
760
- property: 'translateUntranslatedOnly',
2160
+ property: 'resetApprovalStatus',
761
2161
  propertyInDotNotation: false,
762
2162
  type: 'body',
763
2163
  value: '={{ $value }}'
@@ -936,6 +2336,31 @@ exports.translationsProperties = [
936
2336
  loadOptionsMethod: 'getLanguages'
937
2337
  }
938
2338
  },
2339
+ {
2340
+ displayName: 'Custom Instruction',
2341
+ name: 'customInstruction',
2342
+ type: 'string',
2343
+ default: '',
2344
+ description: 'Custom instruction for AI pre-translation. This instruction will be appended to the AI prompt text.\n\n__Note:__ Available only for AI pre-translation method',
2345
+ routing: {
2346
+ send: {
2347
+ property: 'customInstruction',
2348
+ propertyInDotNotation: false,
2349
+ type: 'body',
2350
+ value: '={{ $value || undefined }}'
2351
+ }
2352
+ },
2353
+ displayOptions: {
2354
+ show: {
2355
+ resource: [
2356
+ 'translations'
2357
+ ],
2358
+ operation: [
2359
+ 'api.projects.pre-translations.post'
2360
+ ]
2361
+ }
2362
+ }
2363
+ },
939
2364
  {
940
2365
  displayName: 'Project Id',
941
2366
  name: 'projectId',
@@ -1748,6 +3173,192 @@ exports.translationsProperties = [
1748
3173
  }
1749
3174
  }
1750
3175
  },
3176
+ {
3177
+ displayName: 'Update Fields',
3178
+ name: 'updateFields',
3179
+ type: 'collection',
3180
+ placeholder: 'Add Field',
3181
+ default: {},
3182
+ displayOptions: {
3183
+ show: {
3184
+ resource: [
3185
+ 'translations'
3186
+ ],
3187
+ operation: [
3188
+ 'api.projects.bundles.patch'
3189
+ ]
3190
+ }
3191
+ },
3192
+ options: [
3193
+ {
3194
+ displayName: 'Name',
3195
+ name: 'name',
3196
+ type: 'string',
3197
+ default: '',
3198
+ description: 'Defines name',
3199
+ placeholder: 'Resx bundle'
3200
+ },
3201
+ {
3202
+ displayName: 'Format',
3203
+ name: 'format',
3204
+ type: 'string',
3205
+ default: '',
3206
+ description: 'Defines export file format. If not provided, files will be exported in their original format.\n\n__Note:__ Required for strings-based projects',
3207
+ placeholder: 'crowdin-resx'
3208
+ },
3209
+ {
3210
+ displayName: 'Source Patterns',
3211
+ name: 'sourcePatterns',
3212
+ type: 'fixedCollection',
3213
+ default: {},
3214
+ typeOptions: {
3215
+ multipleValues: true
3216
+ },
3217
+ placeholder: 'Add Item',
3218
+ options: [
3219
+ {
3220
+ name: 'items',
3221
+ displayName: 'Items',
3222
+ values: [
3223
+ {
3224
+ displayName: 'Value',
3225
+ name: '_value',
3226
+ type: 'string',
3227
+ default: ''
3228
+ }
3229
+ ]
3230
+ }
3231
+ ]
3232
+ },
3233
+ {
3234
+ displayName: 'Ignore Patterns',
3235
+ name: 'ignorePatterns',
3236
+ type: 'fixedCollection',
3237
+ default: {},
3238
+ typeOptions: {
3239
+ multipleValues: true
3240
+ },
3241
+ placeholder: 'Add Item',
3242
+ options: [
3243
+ {
3244
+ name: 'items',
3245
+ displayName: 'Items',
3246
+ values: [
3247
+ {
3248
+ displayName: 'Value',
3249
+ name: '_value',
3250
+ type: 'string',
3251
+ default: ''
3252
+ }
3253
+ ]
3254
+ }
3255
+ ]
3256
+ },
3257
+ {
3258
+ displayName: 'Export Pattern',
3259
+ name: 'exportPattern',
3260
+ type: 'string',
3261
+ default: '',
3262
+ description: 'Bundle export pattern. Defines bundle name in resulting translations bundle. **Required** if `format` is specified. If `format` is not specified, uses default pattern based on file structure\n\n__Note:__ Can\'t contain `: * ? " < > |` symbols',
3263
+ placeholder: 'strings-%two_letter_code%.resx'
3264
+ },
3265
+ {
3266
+ displayName: 'Is Multilingual',
3267
+ name: 'isMultilingual',
3268
+ type: 'boolean',
3269
+ default: false,
3270
+ description: 'Export translations in multilingual file'
3271
+ },
3272
+ {
3273
+ displayName: 'Include Project Source Language',
3274
+ name: 'includeProjectSourceLanguage',
3275
+ type: 'boolean',
3276
+ default: false,
3277
+ description: 'Add project source language to bundle'
3278
+ },
3279
+ {
3280
+ displayName: 'Include In Context Pseudo Language',
3281
+ name: 'includeInContextPseudoLanguage',
3282
+ type: 'boolean',
3283
+ default: true,
3284
+ description: 'Add In-Context pseudo-language to bundle'
3285
+ },
3286
+ {
3287
+ displayName: 'Label Ids',
3288
+ name: 'labelIds',
3289
+ type: 'multiOptions',
3290
+ default: [],
3291
+ description: 'Label Identifiers. Get via [List Labels](#operation/api.projects.labels.getMany)\n\n__Note:__ Can\'t be used when `format` is `null`',
3292
+ typeOptions: {
3293
+ loadOptionsMethod: 'getProjectLabelsMulti',
3294
+ loadOptionsDependsOn: [
3295
+ 'projectId'
3296
+ ]
3297
+ }
3298
+ },
3299
+ {
3300
+ displayName: 'Exclude Label Ids',
3301
+ name: 'excludeLabelIds',
3302
+ type: 'multiOptions',
3303
+ default: [],
3304
+ description: 'Label Identifiers. Get via [List Labels](#operation/api.projects.labels.getMany)\n\n__Note:__ Can\'t be used when `format` is `null`',
3305
+ typeOptions: {
3306
+ loadOptionsMethod: 'getProjectLabelsMulti',
3307
+ loadOptionsDependsOn: [
3308
+ 'projectId'
3309
+ ]
3310
+ }
3311
+ },
3312
+ {
3313
+ displayName: 'Label Match Rule',
3314
+ name: 'labelMatchRule',
3315
+ type: 'options',
3316
+ default: '',
3317
+ description: 'Match rule for labels:\n- "all" - all labels must be present in string\n- "any" - any of the labels must be present in string\n\n __Note:__ Can only be used when `labelIds` parameter is provided',
3318
+ options: [
3319
+ {
3320
+ name: '-',
3321
+ value: ''
3322
+ },
3323
+ {
3324
+ name: 'all',
3325
+ value: 'all'
3326
+ },
3327
+ {
3328
+ name: 'any',
3329
+ value: 'any'
3330
+ }
3331
+ ]
3332
+ },
3333
+ {
3334
+ displayName: 'Exclude Label Match Rule',
3335
+ name: 'excludeLabelMatchRule',
3336
+ type: 'options',
3337
+ default: '',
3338
+ description: 'Match rule for excluded labels:\n - "all" - all labels must be present in string\n - "any" - any of the labels must be present in string\n\n __Note:__ Can only be used when `excludeLabelIds` parameter is provided',
3339
+ options: [
3340
+ {
3341
+ name: '-',
3342
+ value: ''
3343
+ },
3344
+ {
3345
+ name: 'all',
3346
+ value: 'all'
3347
+ },
3348
+ {
3349
+ name: 'any',
3350
+ value: 'any'
3351
+ }
3352
+ ]
3353
+ }
3354
+ ],
3355
+ routing: {
3356
+ send: {
3357
+ type: 'body',
3358
+ value: '={{ $value }}'
3359
+ }
3360
+ }
3361
+ },
1751
3362
  {
1752
3363
  displayName: 'Update Fields',
1753
3364
  name: 'updateFields',
@@ -1831,6 +3442,40 @@ exports.translationsProperties = [
1831
3442
  }
1832
3443
  }
1833
3444
  },
3445
+ {
3446
+ displayName: 'Return All',
3447
+ name: 'returnAll',
3448
+ type: 'boolean',
3449
+ default: true,
3450
+ description: 'Whether to return all results or only up to a given limit',
3451
+ displayOptions: {
3452
+ show: {
3453
+ resource: [
3454
+ 'translations'
3455
+ ],
3456
+ operation: [
3457
+ 'api.projects.bundles.branches.getMany'
3458
+ ]
3459
+ }
3460
+ }
3461
+ },
3462
+ {
3463
+ displayName: 'Return All',
3464
+ name: 'returnAll',
3465
+ type: 'boolean',
3466
+ default: true,
3467
+ description: 'Whether to return all results or only up to a given limit',
3468
+ displayOptions: {
3469
+ show: {
3470
+ resource: [
3471
+ 'translations'
3472
+ ],
3473
+ operation: [
3474
+ 'api.projects.bundles.getMany'
3475
+ ]
3476
+ }
3477
+ }
3478
+ },
1834
3479
  {
1835
3480
  displayName: 'Return All',
1836
3481
  name: 'returnAll',