@crowdin/n8n-nodes-crowdin 0.24.0 → 0.25.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 (27) hide show
  1. package/dist/nodes/Crowdin/properties/crowdin/fileBased/applications.js +20 -20
  2. package/dist/nodes/Crowdin/properties/crowdin/fileBased/applications.js.map +1 -1
  3. package/dist/nodes/Crowdin/properties/crowdin/fileBased/projects.js +588 -0
  4. package/dist/nodes/Crowdin/properties/crowdin/fileBased/projects.js.map +1 -1
  5. package/dist/nodes/Crowdin/properties/crowdin/fileBased/sourceFiles.js +614 -0
  6. package/dist/nodes/Crowdin/properties/crowdin/fileBased/sourceFiles.js.map +1 -1
  7. package/dist/nodes/Crowdin/properties/crowdin/fileBased/translations.js +566 -682
  8. package/dist/nodes/Crowdin/properties/crowdin/fileBased/translations.js.map +1 -1
  9. package/dist/nodes/Crowdin/properties/crowdin/stringBased/applications.js +20 -20
  10. package/dist/nodes/Crowdin/properties/crowdin/stringBased/applications.js.map +1 -1
  11. package/dist/nodes/Crowdin/properties/crowdin/stringBased/translations.js +539 -619
  12. package/dist/nodes/Crowdin/properties/crowdin/stringBased/translations.js.map +1 -1
  13. package/dist/nodes/Crowdin/properties/enterprise/fileBased/applications.js +14 -14
  14. package/dist/nodes/Crowdin/properties/enterprise/fileBased/applications.js.map +1 -1
  15. package/dist/nodes/Crowdin/properties/enterprise/fileBased/projectsAndGroups.js +588 -0
  16. package/dist/nodes/Crowdin/properties/enterprise/fileBased/projectsAndGroups.js.map +1 -1
  17. package/dist/nodes/Crowdin/properties/enterprise/fileBased/sourceFiles.js +614 -0
  18. package/dist/nodes/Crowdin/properties/enterprise/fileBased/sourceFiles.js.map +1 -1
  19. package/dist/nodes/Crowdin/properties/enterprise/fileBased/translations.js +562 -680
  20. package/dist/nodes/Crowdin/properties/enterprise/fileBased/translations.js.map +1 -1
  21. package/dist/nodes/Crowdin/properties/enterprise/stringBased/applications.js +14 -14
  22. package/dist/nodes/Crowdin/properties/enterprise/stringBased/applications.js.map +1 -1
  23. package/dist/nodes/Crowdin/properties/enterprise/stringBased/translations.js +536 -618
  24. package/dist/nodes/Crowdin/properties/enterprise/stringBased/translations.js.map +1 -1
  25. package/dist/package.json +1 -1
  26. package/dist/tsconfig.tsbuildinfo +1 -1
  27. package/package.json +1 -1
@@ -1735,365 +1735,11 @@ exports.translationsProperties = [
1735
1735
  }
1736
1736
  },
1737
1737
  {
1738
- displayName: 'Language Ids',
1739
- required: true,
1740
- name: 'languageIds',
1741
- type: 'multiOptions',
1742
- default: [],
1743
- description: 'Set of languages to which auto-translation should be applied. Get via [List Supported Languages](#operation/api.languages.getMany)',
1744
- routing: {
1745
- send: {
1746
- property: 'languageIds',
1747
- propertyInDotNotation: false,
1748
- type: 'body',
1749
- value: '={{ $value }}'
1750
- }
1751
- },
1752
- displayOptions: {
1753
- show: {
1754
- resource: [
1755
- 'translations'
1756
- ],
1757
- operation: [
1758
- 'api.projects.pre-translations.post'
1759
- ]
1760
- }
1761
- },
1762
- typeOptions: {
1763
- loadOptionsMethod: 'getLanguagesMulti'
1764
- }
1765
- },
1766
- {
1767
- displayName: 'Branch Ids',
1768
- name: 'branchIds',
1769
- type: 'multiOptions',
1770
- default: [],
1771
- description: 'Branches array that should be translated',
1772
- routing: {
1773
- send: {
1774
- property: 'branchIds',
1775
- propertyInDotNotation: false,
1776
- type: 'body',
1777
- value: '={{ $value }}'
1778
- }
1779
- },
1780
- displayOptions: {
1781
- show: {
1782
- resource: [
1783
- 'translations'
1784
- ],
1785
- operation: [
1786
- 'api.projects.pre-translations.post'
1787
- ]
1788
- }
1789
- },
1790
- typeOptions: {
1791
- loadOptionsMethod: 'getBranchesMulti',
1792
- loadOptionsDependsOn: [
1793
- 'projectId'
1794
- ]
1795
- }
1796
- },
1797
- {
1798
- displayName: 'Method',
1799
- name: 'method',
1800
- type: 'options',
1801
- default: '',
1802
- description: 'Defines auto-translation method. Available values:\n- \'tm\' – auto-translation via Translation Memory\n- \'mt\' – auto-translation via Machine Translation. \'mt\' should be used with `engineId` parameter\n- \'ai\' – auto-translation via AI. \'ai\' should be used with `aiPromptId` parameter',
1803
- options: [
1804
- {
1805
- name: '-',
1806
- value: ''
1807
- },
1808
- {
1809
- name: 'tm',
1810
- value: 'tm'
1811
- },
1812
- {
1813
- name: 'mt',
1814
- value: 'mt'
1815
- },
1816
- {
1817
- name: 'ai',
1818
- value: 'ai'
1819
- }
1820
- ],
1821
- routing: {
1822
- send: {
1823
- property: 'method',
1824
- propertyInDotNotation: false,
1825
- type: 'body',
1826
- value: '={{ $value || undefined }}'
1827
- }
1828
- },
1829
- displayOptions: {
1830
- show: {
1831
- resource: [
1832
- 'translations'
1833
- ],
1834
- operation: [
1835
- 'api.projects.pre-translations.post'
1836
- ]
1837
- }
1838
- }
1839
- },
1840
- {
1841
- displayName: 'Priority',
1842
- name: 'priority',
1843
- type: 'options',
1844
- default: '',
1845
- description: undefined,
1846
- options: [
1847
- {
1848
- name: '-',
1849
- value: ''
1850
- },
1851
- {
1852
- name: 'low',
1853
- value: 'low'
1854
- },
1855
- {
1856
- name: 'normal',
1857
- value: 'normal'
1858
- },
1859
- {
1860
- name: 'high',
1861
- value: 'high'
1862
- }
1863
- ],
1864
- routing: {
1865
- send: {
1866
- property: 'priority',
1867
- propertyInDotNotation: false,
1868
- type: 'body',
1869
- value: '={{ $value || undefined }}'
1870
- }
1871
- },
1872
- displayOptions: {
1873
- show: {
1874
- resource: [
1875
- 'translations'
1876
- ],
1877
- operation: [
1878
- 'api.projects.pre-translations.post'
1879
- ]
1880
- }
1881
- }
1882
- },
1883
- {
1884
- displayName: 'Engine Id',
1885
- name: 'engineId',
1886
- type: 'options',
1887
- default: '',
1888
- description: 'Machine Translation engine Identifier. Read more about how to get the [MT engine identifier](https://support.crowdin.com/configuring-machine-translation-engines#mt-engine-ids).',
1889
- routing: {
1890
- send: {
1891
- property: 'engineId',
1892
- propertyInDotNotation: false,
1893
- type: 'body',
1894
- value: '={{ typeof $value === \'number\' ? $value : undefined }}'
1895
- }
1896
- },
1897
- displayOptions: {
1898
- show: {
1899
- resource: [
1900
- 'translations'
1901
- ],
1902
- operation: [
1903
- 'api.projects.pre-translations.post'
1904
- ]
1905
- }
1906
- },
1907
- typeOptions: {
1908
- loadOptionsMethod: 'getMTEngines'
1909
- }
1910
- },
1911
- {
1912
- displayName: 'Ai Prompt Id',
1913
- name: 'aiPromptId',
1914
- type: 'options',
1915
- default: '',
1916
- description: 'AI Prompt Identifier. Get via [List AI Prompts](#operation/api.ai.prompts.getMany)',
1917
- routing: {
1918
- send: {
1919
- property: 'aiPromptId',
1920
- propertyInDotNotation: false,
1921
- type: 'body',
1922
- value: '={{ typeof $value === \'number\' ? $value : undefined }}'
1923
- }
1924
- },
1925
- displayOptions: {
1926
- show: {
1927
- resource: [
1928
- 'translations'
1929
- ],
1930
- operation: [
1931
- 'api.projects.pre-translations.post'
1932
- ]
1933
- }
1934
- },
1935
- typeOptions: {
1936
- loadOptionsMethod: 'getAiPrompts'
1937
- }
1938
- },
1939
- {
1940
- displayName: 'Auto Approve Option',
1941
- name: 'autoApproveOption',
1942
- type: 'options',
1943
- default: '',
1944
- description: 'Defines which translations added by TM auto-translation should be auto-approved. Available values:\n- \'all\' – all\n- \'perfectMatchOnly\' – with perfect TM match\n- \'exceptAutoSubstituted\' – all (skip auto-substituted suggestions)\n- \'perfectMatchApprovedOnly\' - with perfect TM match (approved previously)\n- \'none\' – no auto-approve',
1945
- options: [
1946
- {
1947
- name: '-',
1948
- value: ''
1949
- },
1950
- {
1951
- name: 'all',
1952
- value: 'all'
1953
- },
1954
- {
1955
- name: 'exceptAutoSubstituted',
1956
- value: 'exceptAutoSubstituted'
1957
- },
1958
- {
1959
- name: 'perfectMatchApprovedOnly',
1960
- value: 'perfectMatchApprovedOnly'
1961
- },
1962
- {
1963
- name: 'perfectMatchOnly',
1964
- value: 'perfectMatchOnly'
1965
- },
1966
- {
1967
- name: 'none',
1968
- value: 'none'
1969
- }
1970
- ],
1971
- routing: {
1972
- send: {
1973
- property: 'autoApproveOption',
1974
- propertyInDotNotation: false,
1975
- type: 'body',
1976
- value: '={{ $value || undefined }}'
1977
- }
1978
- },
1979
- displayOptions: {
1980
- show: {
1981
- resource: [
1982
- 'translations'
1983
- ],
1984
- operation: [
1985
- 'api.projects.pre-translations.post'
1986
- ]
1987
- }
1988
- }
1989
- },
1990
- {
1991
- displayName: 'Duplicate Translations',
1992
- name: 'duplicateTranslations',
1993
- type: 'boolean',
1994
- default: 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).',
1996
- routing: {
1997
- send: {
1998
- property: 'duplicateTranslations',
1999
- propertyInDotNotation: false,
2000
- type: 'body',
2001
- value: '={{ $value }}'
2002
- }
2003
- },
2004
- displayOptions: {
2005
- show: {
2006
- resource: [
2007
- 'translations'
2008
- ],
2009
- operation: [
2010
- 'api.projects.pre-translations.post'
2011
- ]
2012
- }
2013
- }
2014
- },
2015
- {
2016
- displayName: 'Skip Approved Translations',
2017
- name: 'skipApprovedTranslations',
2018
- type: 'boolean',
2019
- default: false,
2020
- description: 'Skip strings that already have approved translations. Default is `false`.\n\n__Note:__ Cannot be used together with `resetApprovalStatus`.',
2021
- routing: {
2022
- send: {
2023
- property: 'skipApprovedTranslations',
2024
- propertyInDotNotation: false,
2025
- type: 'body',
2026
- value: '={{ $value }}'
2027
- }
2028
- },
2029
- displayOptions: {
2030
- show: {
2031
- resource: [
2032
- 'translations'
2033
- ],
2034
- operation: [
2035
- 'api.projects.pre-translations.post'
2036
- ]
2037
- }
2038
- }
2039
- },
2040
- {
2041
- displayName: 'Scope',
2042
- name: 'scope',
2043
- type: 'options',
2044
- default: '',
2045
- description: 'Which strings to apply auto-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
- },
1738
+ displayName: 'Body',
1739
+ name: '_body',
1740
+ description: 'Select configuration type',
1741
+ default: {},
1742
+ type: 'fixedCollection',
2097
1743
  displayOptions: {
2098
1744
  show: {
2099
1745
  resource: [
@@ -2104,261 +1750,560 @@ exports.translationsProperties = [
2104
1750
  ]
2105
1751
  }
2106
1752
  },
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 auto-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
1753
  options: [
2116
1754
  {
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',
2155
- type: 'boolean',
2156
- default: false,
2157
- description: 'Removes approval on existing translations when applying auto-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`.',
2158
- routing: {
2159
- send: {
2160
- property: 'resetApprovalStatus',
2161
- propertyInDotNotation: false,
2162
- type: 'body',
2163
- value: '={{ $value }}'
2164
- }
2165
- },
2166
- displayOptions: {
2167
- show: {
2168
- resource: [
2169
- 'translations'
2170
- ],
2171
- operation: [
2172
- 'api.projects.pre-translations.post'
2173
- ]
2174
- }
2175
- }
2176
- },
2177
- {
2178
- displayName: 'Translate With Perfect Match Only',
2179
- name: 'translateWithPerfectMatchOnly',
2180
- type: 'boolean',
2181
- default: false,
2182
- description: 'Applies auto-translation only for the strings with perfect match (source text and contextual information are identical)\n\n__Note:__ Works only with TM auto-translation method',
2183
- routing: {
2184
- send: {
2185
- property: 'translateWithPerfectMatchOnly',
2186
- propertyInDotNotation: false,
2187
- type: 'body',
2188
- value: '={{ $value }}'
2189
- }
2190
- },
2191
- displayOptions: {
2192
- show: {
2193
- resource: [
2194
- 'translations'
2195
- ],
2196
- operation: [
2197
- 'api.projects.pre-translations.post'
2198
- ]
2199
- }
2200
- }
2201
- },
2202
- {
2203
- displayName: 'Fallback Languages',
2204
- name: 'fallbackLanguages',
2205
- type: 'fixedCollection',
2206
- default: {},
2207
- description: 'Defines fallback languages mapping. The passed value should be an associative array containing both language id and array of fallback language ids:\n\n - `{languageId}` – Crowdin id for the specified language. Get via [List Supported Languages](#operation/api.languages.getMany)\n - `Array of strings` – an array containing fallback language ids. Get via [List Supported Languages](#operation/api.languages.getMany)\n\n__Note:__ Available only for TM Auto-Translation',
2208
- routing: {
2209
- send: {
2210
- property: 'fallbackLanguages',
2211
- propertyInDotNotation: false,
2212
- type: 'body',
2213
- value: '={{ $value.fields || undefined }}',
2214
- preSend: [
2215
- preSend_1.normalizeFieldBody
2216
- ]
2217
- }
2218
- },
2219
- displayOptions: {
2220
- show: {
2221
- resource: [
2222
- 'translations'
2223
- ],
2224
- operation: [
2225
- 'api.projects.pre-translations.post'
1755
+ displayName: 'By Files',
1756
+ name: '_byFiles',
1757
+ values: [
1758
+ {
1759
+ displayName: 'Language Ids',
1760
+ name: 'languageIds',
1761
+ type: 'multiOptions',
1762
+ typeOptions: {
1763
+ loadOptionsMethod: 'getLanguagesMulti'
1764
+ },
1765
+ default: [],
1766
+ description: 'Set of languages to which auto-translation should be applied. Get via [List Supported Languages](#operation/api.languages.getMany)',
1767
+ required: true
1768
+ },
1769
+ {
1770
+ displayName: 'Branch Ids',
1771
+ name: 'branchIds',
1772
+ type: 'multiOptions',
1773
+ typeOptions: {
1774
+ loadOptionsMethod: 'getBranchesMulti',
1775
+ loadOptionsDependsOn: [
1776
+ 'projectId'
1777
+ ]
1778
+ },
1779
+ default: [],
1780
+ description: 'Branches array that should be translated'
1781
+ },
1782
+ {
1783
+ displayName: 'Label Ids',
1784
+ name: 'labelIds',
1785
+ type: 'multiOptions',
1786
+ typeOptions: {
1787
+ loadOptionsMethod: 'getProjectLabelsMulti',
1788
+ loadOptionsDependsOn: [
1789
+ 'projectId'
1790
+ ]
1791
+ },
1792
+ default: [],
1793
+ description: 'Label Identifiers. Get via [List Labels](#operation/api.projects.labels.getMany)'
1794
+ },
1795
+ {
1796
+ displayName: 'Exclude Label Ids',
1797
+ name: 'excludeLabelIds',
1798
+ type: 'multiOptions',
1799
+ typeOptions: {
1800
+ loadOptionsMethod: 'getProjectLabelsMulti',
1801
+ loadOptionsDependsOn: [
1802
+ 'projectId'
1803
+ ]
1804
+ },
1805
+ default: [],
1806
+ description: 'Label Identifiers. Get via [List Labels](#operation/api.projects.labels.getMany)'
1807
+ },
1808
+ {
1809
+ displayName: 'Method',
1810
+ name: 'method',
1811
+ type: 'options',
1812
+ default: '',
1813
+ description: 'Defines auto-translation method. Available values:\n- \'tm\' – auto-translation via Translation Memory\n- \'mt\' – auto-translation via Machine Translation. \'mt\' should be used with `engineId` parameter\n- \'ai\' – auto-translation via AI. \'ai\' should be used with `aiPromptId` parameter',
1814
+ options: [
1815
+ {
1816
+ name: '-',
1817
+ value: ''
1818
+ },
1819
+ {
1820
+ name: 'tm',
1821
+ value: 'tm'
1822
+ },
1823
+ {
1824
+ name: 'mt',
1825
+ value: 'mt'
1826
+ },
1827
+ {
1828
+ name: 'ai',
1829
+ value: 'ai'
1830
+ }
1831
+ ],
1832
+ placeholder: 'mt'
1833
+ },
1834
+ {
1835
+ displayName: 'Priority',
1836
+ name: 'priority',
1837
+ type: 'options',
1838
+ default: '',
1839
+ description: undefined,
1840
+ options: [
1841
+ {
1842
+ name: '-',
1843
+ value: ''
1844
+ },
1845
+ {
1846
+ name: 'low',
1847
+ value: 'low'
1848
+ },
1849
+ {
1850
+ name: 'normal',
1851
+ value: 'normal'
1852
+ },
1853
+ {
1854
+ name: 'high',
1855
+ value: 'high'
1856
+ }
1857
+ ]
1858
+ },
1859
+ {
1860
+ displayName: 'Engine Id',
1861
+ name: 'engineId',
1862
+ type: 'options',
1863
+ default: '',
1864
+ description: 'Machine Translation engine Identifier. Read more about how to get the [MT engine identifier](https://support.crowdin.com/configuring-machine-translation-engines#mt-engine-ids).',
1865
+ typeOptions: {
1866
+ loadOptionsMethod: 'getMTEngines'
1867
+ }
1868
+ },
1869
+ {
1870
+ displayName: 'Ai Prompt Id',
1871
+ name: 'aiPromptId',
1872
+ type: 'options',
1873
+ default: '',
1874
+ description: 'AI Prompt Identifier. Get via [List AI Prompts](#operation/api.ai.prompts.getMany)',
1875
+ typeOptions: {
1876
+ loadOptionsMethod: 'getAiPrompts'
1877
+ }
1878
+ },
1879
+ {
1880
+ displayName: 'Auto Approve Option',
1881
+ name: 'autoApproveOption',
1882
+ type: 'options',
1883
+ default: '',
1884
+ description: 'Defines which translations added by TM auto-translation should be auto-approved. Available values:\n- \'all\' – all\n- \'perfectMatchOnly\' – with perfect TM match\n- \'exceptAutoSubstituted\' – all (skip auto-substituted suggestions)\n- \'perfectMatchApprovedOnly\' - with perfect TM match (approved previously)\n- \'none\' – no auto-approve',
1885
+ options: [
1886
+ {
1887
+ name: '-',
1888
+ value: ''
1889
+ },
1890
+ {
1891
+ name: 'all',
1892
+ value: 'all'
1893
+ },
1894
+ {
1895
+ name: 'exceptAutoSubstituted',
1896
+ value: 'exceptAutoSubstituted'
1897
+ },
1898
+ {
1899
+ name: 'perfectMatchApprovedOnly',
1900
+ value: 'perfectMatchApprovedOnly'
1901
+ },
1902
+ {
1903
+ name: 'perfectMatchOnly',
1904
+ value: 'perfectMatchOnly'
1905
+ },
1906
+ {
1907
+ name: 'none',
1908
+ value: 'none'
1909
+ }
1910
+ ]
1911
+ },
1912
+ {
1913
+ displayName: 'Duplicate Translations',
1914
+ name: 'duplicateTranslations',
1915
+ type: 'boolean',
1916
+ default: false,
1917
+ 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).'
1918
+ },
1919
+ {
1920
+ displayName: 'Skip Approved Translations',
1921
+ name: 'skipApprovedTranslations',
1922
+ type: 'boolean',
1923
+ default: false,
1924
+ description: 'Skip strings that already have approved translations. Default is `false`.\n\n__Note:__ Cannot be used together with `resetApprovalStatus`.'
1925
+ },
1926
+ {
1927
+ displayName: 'Scope',
1928
+ name: 'scope',
1929
+ type: 'options',
1930
+ default: '',
1931
+ description: 'Which strings to apply auto-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`.',
1932
+ options: [
1933
+ {
1934
+ name: '-',
1935
+ value: ''
1936
+ },
1937
+ {
1938
+ name: 'untranslated',
1939
+ value: 'untranslated'
1940
+ },
1941
+ {
1942
+ name: 'translated',
1943
+ value: 'translated'
1944
+ },
1945
+ {
1946
+ name: 'all',
1947
+ value: 'all'
1948
+ }
1949
+ ]
1950
+ },
1951
+ {
1952
+ displayName: 'Translation Modified Before',
1953
+ name: 'dateTime:translationModifiedBefore',
1954
+ type: 'dateTime',
1955
+ default: '',
1956
+ 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`.',
1957
+ placeholder: '2026-01-01T00:00:00+00:00'
1958
+ },
1959
+ {
1960
+ displayName: 'Replace Translations Option',
1961
+ name: 'replaceTranslationsOption',
1962
+ type: 'options',
1963
+ default: '',
1964
+ description: 'Defines whether to replace existing translations with new auto-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`).',
1965
+ options: [
1966
+ {
1967
+ name: '-',
1968
+ value: ''
1969
+ },
1970
+ {
1971
+ name: 'none',
1972
+ value: 'none'
1973
+ },
1974
+ {
1975
+ name: 'autoTranslated',
1976
+ value: 'autoTranslated'
1977
+ },
1978
+ {
1979
+ name: 'all',
1980
+ value: 'all'
1981
+ }
1982
+ ]
1983
+ },
1984
+ {
1985
+ displayName: 'Reset Approval Status',
1986
+ name: 'resetApprovalStatus',
1987
+ type: 'boolean',
1988
+ default: false,
1989
+ description: 'Removes approval on existing translations when applying auto-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`.'
1990
+ },
1991
+ {
1992
+ displayName: 'Translate With Perfect Match Only',
1993
+ name: 'translateWithPerfectMatchOnly',
1994
+ type: 'boolean',
1995
+ default: false,
1996
+ description: 'Applies auto-translation only for the strings with perfect match (source text and contextual information are identical)\n\n__Note:__ Works only with TM auto-translation method'
1997
+ },
1998
+ {
1999
+ displayName: 'Fallback Languages',
2000
+ name: 'fallbackLanguages',
2001
+ type: 'fixedCollection',
2002
+ default: {},
2003
+ description: 'Defines fallback languages mapping. The passed value should be an associative array containing both language id and array of fallback language ids:\n\n - `{languageId}` – Crowdin id for the specified language. Get via [List Supported Languages](#operation/api.languages.getMany)\n - `Array of strings` – an array containing fallback language ids. Get via [List Supported Languages](#operation/api.languages.getMany)\n\n__Note:__ Available only for TM Auto-Translation',
2004
+ placeholder: 'Add Field',
2005
+ options: [
2006
+ {
2007
+ displayName: 'Fields',
2008
+ name: 'fields',
2009
+ values: [
2010
+ {
2011
+ displayName: 'Language Id',
2012
+ name: 'languageId',
2013
+ type: 'options',
2014
+ typeOptions: {
2015
+ loadOptionsMethod: 'getLanguages'
2016
+ },
2017
+ default: '',
2018
+ description: undefined
2019
+ }
2020
+ ]
2021
+ }
2022
+ ]
2023
+ },
2024
+ {
2025
+ displayName: 'Source Language Id',
2026
+ name: 'sourceLanguageId',
2027
+ type: 'options',
2028
+ default: '',
2029
+ description: 'Source language identifier. Get via [Project Target Languages](#operation/api.projects.get)',
2030
+ typeOptions: {
2031
+ loadOptionsMethod: 'getLanguages'
2032
+ }
2033
+ },
2034
+ {
2035
+ displayName: 'Custom Instruction',
2036
+ name: 'customInstruction',
2037
+ type: 'string',
2038
+ default: '',
2039
+ description: 'Custom instruction for AI auto-translation. This instruction will be appended to the AI prompt text.\n\n__Note:__ Available only for AI auto-translation method'
2040
+ }
2226
2041
  ]
2227
- }
2228
- },
2229
- placeholder: 'Add Field',
2230
- options: [
2042
+ },
2231
2043
  {
2232
- displayName: 'Fields',
2233
- name: 'fields',
2044
+ displayName: 'By Task',
2045
+ name: '_byTask',
2234
2046
  values: [
2235
2047
  {
2236
- displayName: 'Language Id',
2237
- name: 'languageId',
2048
+ displayName: 'Task Id',
2049
+ name: 'taskId',
2050
+ type: 'options',
2051
+ default: '',
2052
+ description: 'Task Identifier. Get via [List Tasks](#operation/api.projects.tasks.getMany)',
2053
+ required: true,
2054
+ typeOptions: {
2055
+ loadOptionsMethod: 'getProjectTasks',
2056
+ loadOptionsDependsOn: [
2057
+ 'projectId'
2058
+ ]
2059
+ }
2060
+ },
2061
+ {
2062
+ displayName: 'Method',
2063
+ name: 'method',
2064
+ type: 'options',
2065
+ default: '',
2066
+ description: 'Defines auto-translation method. Available values:\n- \'tm\' – auto-translation via Translation Memory\n- \'mt\' – auto-translation via Machine Translation. \'mt\' should be used with `engineId` parameter\n- \'ai\' – auto-translation via AI. \'ai\' should be used with `aiPromptId` parameter',
2067
+ options: [
2068
+ {
2069
+ name: '-',
2070
+ value: ''
2071
+ },
2072
+ {
2073
+ name: 'tm',
2074
+ value: 'tm'
2075
+ },
2076
+ {
2077
+ name: 'mt',
2078
+ value: 'mt'
2079
+ },
2080
+ {
2081
+ name: 'ai',
2082
+ value: 'ai'
2083
+ }
2084
+ ],
2085
+ placeholder: 'mt'
2086
+ },
2087
+ {
2088
+ displayName: 'Priority',
2089
+ name: 'priority',
2090
+ type: 'options',
2091
+ default: '',
2092
+ description: undefined,
2093
+ options: [
2094
+ {
2095
+ name: '-',
2096
+ value: ''
2097
+ },
2098
+ {
2099
+ name: 'low',
2100
+ value: 'low'
2101
+ },
2102
+ {
2103
+ name: 'normal',
2104
+ value: 'normal'
2105
+ },
2106
+ {
2107
+ name: 'high',
2108
+ value: 'high'
2109
+ }
2110
+ ]
2111
+ },
2112
+ {
2113
+ displayName: 'Engine Id',
2114
+ name: 'engineId',
2115
+ type: 'options',
2116
+ default: '',
2117
+ description: 'Machine Translation engine Identifier. Read more about how to get the [MT engine identifier](https://support.crowdin.com/configuring-machine-translation-engines#mt-engine-ids).',
2118
+ typeOptions: {
2119
+ loadOptionsMethod: 'getMTEngines'
2120
+ }
2121
+ },
2122
+ {
2123
+ displayName: 'Ai Prompt Id',
2124
+ name: 'aiPromptId',
2125
+ type: 'options',
2126
+ default: '',
2127
+ description: 'AI Prompt Identifier. Get via [List AI Prompts](#operation/api.ai.prompts.getMany)',
2128
+ typeOptions: {
2129
+ loadOptionsMethod: 'getAiPrompts'
2130
+ }
2131
+ },
2132
+ {
2133
+ displayName: 'Auto Approve Option',
2134
+ name: 'autoApproveOption',
2135
+ type: 'options',
2136
+ default: '',
2137
+ description: 'Defines which translations added by TM auto-translation should be auto-approved. Available values:\n- \'all\' – all\n- \'perfectMatchOnly\' – with perfect TM match\n- \'exceptAutoSubstituted\' – all (skip auto-substituted suggestions)\n- \'perfectMatchApprovedOnly\' - with perfect TM match (approved previously)\n- \'none\' – no auto-approve',
2138
+ options: [
2139
+ {
2140
+ name: '-',
2141
+ value: ''
2142
+ },
2143
+ {
2144
+ name: 'all',
2145
+ value: 'all'
2146
+ },
2147
+ {
2148
+ name: 'exceptAutoSubstituted',
2149
+ value: 'exceptAutoSubstituted'
2150
+ },
2151
+ {
2152
+ name: 'perfectMatchApprovedOnly',
2153
+ value: 'perfectMatchApprovedOnly'
2154
+ },
2155
+ {
2156
+ name: 'perfectMatchOnly',
2157
+ value: 'perfectMatchOnly'
2158
+ },
2159
+ {
2160
+ name: 'none',
2161
+ value: 'none'
2162
+ }
2163
+ ]
2164
+ },
2165
+ {
2166
+ displayName: 'Duplicate Translations',
2167
+ name: 'duplicateTranslations',
2168
+ type: 'boolean',
2169
+ default: false,
2170
+ 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).'
2171
+ },
2172
+ {
2173
+ displayName: 'Skip Approved Translations',
2174
+ name: 'skipApprovedTranslations',
2175
+ type: 'boolean',
2176
+ default: false,
2177
+ description: 'Skip strings that already have approved translations. Default is `false`.\n\n__Note:__ Cannot be used together with `resetApprovalStatus`.'
2178
+ },
2179
+ {
2180
+ displayName: 'Scope',
2181
+ name: 'scope',
2182
+ type: 'options',
2183
+ default: '',
2184
+ description: 'Which strings to apply auto-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`.',
2185
+ options: [
2186
+ {
2187
+ name: '-',
2188
+ value: ''
2189
+ },
2190
+ {
2191
+ name: 'untranslated',
2192
+ value: 'untranslated'
2193
+ },
2194
+ {
2195
+ name: 'translated',
2196
+ value: 'translated'
2197
+ },
2198
+ {
2199
+ name: 'all',
2200
+ value: 'all'
2201
+ }
2202
+ ]
2203
+ },
2204
+ {
2205
+ displayName: 'Translation Modified Before',
2206
+ name: 'dateTime:translationModifiedBefore',
2207
+ type: 'dateTime',
2208
+ default: '',
2209
+ 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`.',
2210
+ placeholder: '2026-01-01T00:00:00+00:00'
2211
+ },
2212
+ {
2213
+ displayName: 'Replace Translations Option',
2214
+ name: 'replaceTranslationsOption',
2215
+ type: 'options',
2216
+ default: '',
2217
+ description: 'Defines whether to replace existing translations with new auto-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`).',
2218
+ options: [
2219
+ {
2220
+ name: '-',
2221
+ value: ''
2222
+ },
2223
+ {
2224
+ name: 'none',
2225
+ value: 'none'
2226
+ },
2227
+ {
2228
+ name: 'autoTranslated',
2229
+ value: 'autoTranslated'
2230
+ },
2231
+ {
2232
+ name: 'all',
2233
+ value: 'all'
2234
+ }
2235
+ ]
2236
+ },
2237
+ {
2238
+ displayName: 'Reset Approval Status',
2239
+ name: 'resetApprovalStatus',
2240
+ type: 'boolean',
2241
+ default: false,
2242
+ description: 'Removes approval on existing translations when applying auto-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`.'
2243
+ },
2244
+ {
2245
+ displayName: 'Translate With Perfect Match Only',
2246
+ name: 'translateWithPerfectMatchOnly',
2247
+ type: 'boolean',
2248
+ default: false,
2249
+ description: 'Applies auto-translation only for the strings with perfect match (source text and contextual information are identical)\n\n__Note:__ Works only with TM auto-translation method'
2250
+ },
2251
+ {
2252
+ displayName: 'Fallback Languages',
2253
+ name: 'fallbackLanguages',
2254
+ type: 'fixedCollection',
2255
+ default: {},
2256
+ description: 'Defines fallback languages mapping. The passed value should be an associative array containing both language id and array of fallback language ids:\n\n - `{languageId}` – Crowdin id for the specified language. Get via [List Supported Languages](#operation/api.languages.getMany)\n - `Array of strings` – an array containing fallback language ids. Get via [List Supported Languages](#operation/api.languages.getMany)\n\n__Note:__ Available only for TM Auto-Translation',
2257
+ placeholder: 'Add Field',
2258
+ options: [
2259
+ {
2260
+ displayName: 'Fields',
2261
+ name: 'fields',
2262
+ values: [
2263
+ {
2264
+ displayName: 'Language Id',
2265
+ name: 'languageId',
2266
+ type: 'options',
2267
+ typeOptions: {
2268
+ loadOptionsMethod: 'getLanguages'
2269
+ },
2270
+ default: '',
2271
+ description: undefined
2272
+ }
2273
+ ]
2274
+ }
2275
+ ]
2276
+ },
2277
+ {
2278
+ displayName: 'Source Language Id',
2279
+ name: 'sourceLanguageId',
2238
2280
  type: 'options',
2281
+ default: '',
2282
+ description: 'Source language identifier. Get via [Project Target Languages](#operation/api.projects.get)',
2239
2283
  typeOptions: {
2240
2284
  loadOptionsMethod: 'getLanguages'
2241
- },
2285
+ }
2286
+ },
2287
+ {
2288
+ displayName: 'Custom Instruction',
2289
+ name: 'customInstruction',
2290
+ type: 'string',
2242
2291
  default: '',
2243
- description: undefined
2292
+ description: 'Custom instruction for AI auto-translation. This instruction will be appended to the AI prompt text.\n\n__Note:__ Available only for AI auto-translation method'
2244
2293
  }
2245
2294
  ]
2246
2295
  }
2247
- ]
2248
- },
2249
- {
2250
- displayName: 'Label Ids',
2251
- name: 'labelIds',
2252
- type: 'multiOptions',
2253
- default: [],
2254
- description: 'Label Identifiers. Get via [List Labels](#operation/api.projects.labels.getMany)',
2296
+ ],
2255
2297
  routing: {
2256
2298
  send: {
2257
- property: 'labelIds',
2258
- propertyInDotNotation: false,
2259
- type: 'body',
2260
- value: '={{ $value }}'
2261
- }
2262
- },
2263
- displayOptions: {
2264
- show: {
2265
- resource: [
2266
- 'translations'
2299
+ preSend: [
2300
+ preSend_1.normalizeRootBody
2267
2301
  ],
2268
- operation: [
2269
- 'api.projects.pre-translations.post'
2270
- ]
2271
- }
2272
- },
2273
- typeOptions: {
2274
- loadOptionsMethod: 'getProjectLabelsMulti',
2275
- loadOptionsDependsOn: [
2276
- 'projectId'
2277
- ]
2278
- }
2279
- },
2280
- {
2281
- displayName: 'Exclude Label Ids',
2282
- name: 'excludeLabelIds',
2283
- type: 'multiOptions',
2284
- default: [],
2285
- description: 'Label Identifiers. Get via [List Labels](#operation/api.projects.labels.getMany)',
2286
- routing: {
2287
- send: {
2288
- property: 'excludeLabelIds',
2302
+ property: '_body',
2289
2303
  propertyInDotNotation: false,
2290
2304
  type: 'body',
2291
2305
  value: '={{ $value }}'
2292
2306
  }
2293
- },
2294
- displayOptions: {
2295
- show: {
2296
- resource: [
2297
- 'translations'
2298
- ],
2299
- operation: [
2300
- 'api.projects.pre-translations.post'
2301
- ]
2302
- }
2303
- },
2304
- typeOptions: {
2305
- loadOptionsMethod: 'getProjectLabelsMulti',
2306
- loadOptionsDependsOn: [
2307
- 'projectId'
2308
- ]
2309
- }
2310
- },
2311
- {
2312
- displayName: 'Source Language Id',
2313
- name: 'sourceLanguageId',
2314
- type: 'options',
2315
- default: '',
2316
- description: 'Source language identifier. Get via [Project Target Languages](#operation/api.projects.get)',
2317
- routing: {
2318
- send: {
2319
- property: 'sourceLanguageId',
2320
- propertyInDotNotation: false,
2321
- type: 'body',
2322
- value: '={{ $value || undefined }}'
2323
- }
2324
- },
2325
- displayOptions: {
2326
- show: {
2327
- resource: [
2328
- 'translations'
2329
- ],
2330
- operation: [
2331
- 'api.projects.pre-translations.post'
2332
- ]
2333
- }
2334
- },
2335
- typeOptions: {
2336
- loadOptionsMethod: 'getLanguages'
2337
- }
2338
- },
2339
- {
2340
- displayName: 'Custom Instruction',
2341
- name: 'customInstruction',
2342
- type: 'string',
2343
- default: '',
2344
- description: 'Custom instruction for AI auto-translation. This instruction will be appended to the AI prompt text.\n\n__Note:__ Available only for AI auto-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
2307
  }
2363
2308
  },
2364
2309
  {
@@ -3407,31 +3352,6 @@ exports.translationsProperties = [
3407
3352
  value: 'finished'
3408
3353
  }
3409
3354
  ]
3410
- },
3411
- {
3412
- displayName: 'Priority',
3413
- name: 'priority',
3414
- type: 'options',
3415
- default: '',
3416
- description: 'Value for /priority',
3417
- options: [
3418
- {
3419
- name: '-',
3420
- value: ''
3421
- },
3422
- {
3423
- name: 'low',
3424
- value: 'low'
3425
- },
3426
- {
3427
- name: 'normal',
3428
- value: 'normal'
3429
- },
3430
- {
3431
- name: 'high',
3432
- value: 'high'
3433
- }
3434
- ]
3435
3355
  }
3436
3356
  ],
3437
3357
  routing: {