@crowdin/app-project-module 1.10.0 → 1.11.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.
- package/out/modules/api/api.js +323 -18
- package/out/modules/api/components.d.ts +222 -19
- package/out/modules/api/components.js +222 -19
- package/out/modules/integration/handlers/crowdin-file-progress.js +5 -2
- package/out/modules/integration/handlers/integration-data.js +14 -2
- package/out/modules/integration/handlers/settings-save.js +29 -1
- package/out/modules/integration/handlers/settings-schema.d.ts +3 -0
- package/out/modules/integration/handlers/settings-schema.js +29 -0
- package/out/modules/integration/handlers/sync-settings.js +11 -3
- package/out/util/index.js +3 -1
- package/out/util/logger.d.ts +1 -0
- package/out/util/logger.js +7 -0
- package/package.json +13 -13
|
@@ -54,7 +54,6 @@
|
|
|
54
54
|
* IntegrationFiles:
|
|
55
55
|
* type: array
|
|
56
56
|
* description: 'List of integration files and folders'
|
|
57
|
-
* example: [{id: '1', name: 'Landing pages'}, {id: '73291251883', name: 'Intro', parentId: '1', type: 'json'}]
|
|
58
57
|
* items:
|
|
59
58
|
* anyOf:
|
|
60
59
|
* - type: object
|
|
@@ -69,6 +68,17 @@
|
|
|
69
68
|
* parentId:
|
|
70
69
|
* type: string
|
|
71
70
|
* description: 'Parent folder identifier'
|
|
71
|
+
* path:
|
|
72
|
+
* type: string
|
|
73
|
+
* description: 'Full path to the folder'
|
|
74
|
+
* createdAt:
|
|
75
|
+
* type: string
|
|
76
|
+
* format: date-time
|
|
77
|
+
* description: 'Folder creation timestamp (ISO 8601)'
|
|
78
|
+
* updatedAt:
|
|
79
|
+
* type: string
|
|
80
|
+
* format: date-time
|
|
81
|
+
* description: 'Folder last update timestamp (ISO 8601)'
|
|
72
82
|
* - type: object
|
|
73
83
|
* description: 'File'
|
|
74
84
|
* properties:
|
|
@@ -84,18 +94,29 @@
|
|
|
84
94
|
* type:
|
|
85
95
|
* type: string
|
|
86
96
|
* description: 'File type (e.g., json, xml, html)'
|
|
97
|
+
* path:
|
|
98
|
+
* type: string
|
|
99
|
+
* description: 'Full path to the file'
|
|
100
|
+
* createdAt:
|
|
101
|
+
* type: string
|
|
102
|
+
* format: date-time
|
|
103
|
+
* description: 'File creation timestamp (ISO 8601)'
|
|
104
|
+
* updatedAt:
|
|
105
|
+
* type: string
|
|
106
|
+
* format: date-time
|
|
107
|
+
* description: 'File last update timestamp (ISO 8601)'
|
|
87
108
|
* isNew:
|
|
88
109
|
* type: boolean
|
|
89
|
-
* description: 'Whether file is new (
|
|
110
|
+
* description: 'Whether file is new (created after last sync)'
|
|
90
111
|
* isUpdated:
|
|
91
112
|
* type: boolean
|
|
92
113
|
* description: 'Whether file was updated since last sync'
|
|
93
114
|
* notSynced:
|
|
94
115
|
* type: boolean
|
|
95
|
-
* description: 'Whether file was never synced'
|
|
116
|
+
* description: 'Whether file was never synced to Crowdin'
|
|
96
117
|
* synced:
|
|
97
118
|
* type: boolean
|
|
98
|
-
* description: 'Whether file
|
|
119
|
+
* description: 'Whether file was previously synced to Crowdin'
|
|
99
120
|
* UpdateCrowdinFiles:
|
|
100
121
|
* title: 'Sync Files to Crowdin'
|
|
101
122
|
* required:
|
|
@@ -145,9 +166,19 @@
|
|
|
145
166
|
* example: '067da473-fc0b-43e3-b0a2-09d26af130c1'
|
|
146
167
|
* SettingsData:
|
|
147
168
|
* type: object
|
|
148
|
-
*
|
|
149
|
-
* additionalProperties:
|
|
150
|
-
*
|
|
169
|
+
* description: 'Application configuration settings. Fields depend on integration implementation.'
|
|
170
|
+
* additionalProperties: true
|
|
171
|
+
* example:
|
|
172
|
+
* schedule: '3'
|
|
173
|
+
* condition: '1'
|
|
174
|
+
* new-crowdin-files: true
|
|
175
|
+
* new-integration-files: false
|
|
176
|
+
* inContext: false
|
|
177
|
+
* importEqSuggestions: true
|
|
178
|
+
* autoApproveImported: false
|
|
179
|
+
* translateHidden: false
|
|
180
|
+
* includeByFilePath: '/content/**'
|
|
181
|
+
* excludeByFilePath: '/drafts/**'
|
|
151
182
|
* UpdateSettingsData:
|
|
152
183
|
* title: 'Update Application Settings'
|
|
153
184
|
* required:
|
|
@@ -162,33 +193,128 @@
|
|
|
162
193
|
* $ref: '#/components/schemas/SettingsData'
|
|
163
194
|
* SettingsResponse:
|
|
164
195
|
* $ref: '#/components/schemas/SettingsData'
|
|
196
|
+
* SettingsSchemaResponse:
|
|
197
|
+
* type: array
|
|
198
|
+
* description: 'List of configuration fields with metadata'
|
|
199
|
+
* items:
|
|
200
|
+
* type: object
|
|
201
|
+
* properties:
|
|
202
|
+
* key:
|
|
203
|
+
* type: string
|
|
204
|
+
* description: 'Unique field identifier'
|
|
205
|
+
* example: 'schedule'
|
|
206
|
+
* label:
|
|
207
|
+
* type: string
|
|
208
|
+
* description: 'Human-readable field label'
|
|
209
|
+
* example: 'Sync schedule'
|
|
210
|
+
* labelHtml:
|
|
211
|
+
* type: string
|
|
212
|
+
* description: 'HTML label (alternative to label)'
|
|
213
|
+
* type:
|
|
214
|
+
* type: string
|
|
215
|
+
* enum: [checkbox, text, select, textarea, notice, password, file]
|
|
216
|
+
* description: 'Field input type'
|
|
217
|
+
* example: 'select'
|
|
218
|
+
* defaultValue:
|
|
219
|
+
* type: string
|
|
220
|
+
* description: 'Default value for the field'
|
|
221
|
+
* example: '0'
|
|
222
|
+
* helpText:
|
|
223
|
+
* type: string
|
|
224
|
+
* description: 'Plain text help description'
|
|
225
|
+
* helpTextHtml:
|
|
226
|
+
* type: string
|
|
227
|
+
* description: 'HTML help description'
|
|
228
|
+
* category:
|
|
229
|
+
* type: string
|
|
230
|
+
* description: 'Field category (general, sync, advanced)'
|
|
231
|
+
* example: 'sync'
|
|
232
|
+
* position:
|
|
233
|
+
* type: integer
|
|
234
|
+
* description: 'Display order within category'
|
|
235
|
+
* example: 0
|
|
236
|
+
* options:
|
|
237
|
+
* type: array
|
|
238
|
+
* description: 'Available options (for select type)'
|
|
239
|
+
* items:
|
|
240
|
+
* type: object
|
|
241
|
+
* properties:
|
|
242
|
+
* value:
|
|
243
|
+
* type: string
|
|
244
|
+
* label:
|
|
245
|
+
* type: string
|
|
246
|
+
* dependencySettings:
|
|
247
|
+
* type: string
|
|
248
|
+
* description: 'JSON string defining field visibility rules'
|
|
249
|
+
* isSearchable:
|
|
250
|
+
* type: boolean
|
|
251
|
+
* description: 'Allow searching options (for select type)'
|
|
252
|
+
* isMulti:
|
|
253
|
+
* type: boolean
|
|
254
|
+
* description: 'Allow multiple selection (for select type)'
|
|
255
|
+
* noticeType:
|
|
256
|
+
* type: string
|
|
257
|
+
* enum: [info, warning, danger, success]
|
|
258
|
+
* description: 'Notice type (for notice type fields)'
|
|
259
|
+
* noIcon:
|
|
260
|
+
* type: boolean
|
|
261
|
+
* description: 'Hide icon in notice (for notice type)'
|
|
165
262
|
* CrowdinSyncSettingsResponse:
|
|
166
263
|
* type: object
|
|
167
|
-
*
|
|
168
|
-
* 102: ['uk', 'de']
|
|
264
|
+
* description: 'Mapping of Crowdin file IDs to target language codes for auto-sync'
|
|
169
265
|
* additionalProperties:
|
|
170
266
|
* type: array
|
|
267
|
+
* description: 'Array of language codes to sync for this file'
|
|
171
268
|
* items:
|
|
172
269
|
* type: string
|
|
270
|
+
* description: 'Language code (e.g., uk, de, fr)'
|
|
271
|
+
* example:
|
|
272
|
+
* '102': ['uk', 'de', 'fr']
|
|
273
|
+
* '999': ['uk', 'es']
|
|
173
274
|
* IntegrationSyncSettingsResponse:
|
|
174
275
|
* type: array
|
|
276
|
+
* description: 'List of integration files configured for auto-sync with their current status'
|
|
175
277
|
* items:
|
|
176
278
|
* type: object
|
|
279
|
+
* required:
|
|
280
|
+
* - id
|
|
281
|
+
* - name
|
|
282
|
+
* - node_type
|
|
177
283
|
* properties:
|
|
178
|
-
* name:
|
|
179
|
-
* type: string
|
|
180
284
|
* id:
|
|
181
285
|
* type: string
|
|
182
|
-
*
|
|
286
|
+
* description: 'Unique file identifier'
|
|
287
|
+
* name:
|
|
288
|
+
* type: string
|
|
289
|
+
* description: 'File name'
|
|
290
|
+
* parent_id:
|
|
183
291
|
* type: string
|
|
292
|
+
* description: 'Parent folder identifier'
|
|
184
293
|
* type:
|
|
185
294
|
* type: string
|
|
295
|
+
* description: 'File type (e.g., html, json)'
|
|
186
296
|
* node_type:
|
|
187
297
|
* $ref: '#/components/schemas/NodeType'
|
|
188
298
|
* schedule:
|
|
189
299
|
* type: boolean
|
|
300
|
+
* description: 'Whether auto-sync is enabled for this file'
|
|
301
|
+
* sync:
|
|
302
|
+
* type: boolean
|
|
303
|
+
* description: 'Sync status flag'
|
|
304
|
+
* isNew:
|
|
305
|
+
* type: boolean
|
|
306
|
+
* description: 'Whether file is new (created after last sync)'
|
|
307
|
+
* isUpdated:
|
|
308
|
+
* type: boolean
|
|
309
|
+
* description: 'Whether file was updated since last sync'
|
|
310
|
+
* notSynced:
|
|
311
|
+
* type: boolean
|
|
312
|
+
* description: 'Whether file was never synced to Crowdin'
|
|
313
|
+
* synced:
|
|
314
|
+
* type: boolean
|
|
315
|
+
* description: 'Whether file was previously synced to Crowdin'
|
|
190
316
|
* UpdateSyncSettingsData:
|
|
191
|
-
* title: 'Update
|
|
317
|
+
* title: 'Update Auto-Sync Files Configuration'
|
|
192
318
|
* required:
|
|
193
319
|
* - projectId
|
|
194
320
|
* - provider
|
|
@@ -200,13 +326,15 @@
|
|
|
200
326
|
* example: 12
|
|
201
327
|
* provider:
|
|
202
328
|
* type: string
|
|
329
|
+
* description: 'Sync direction: "crowdin" for Crowdin→Integration, "integration" for Integration→Crowdin'
|
|
203
330
|
* enum:
|
|
204
331
|
* - crowdin
|
|
205
332
|
* - integration
|
|
206
333
|
* files:
|
|
334
|
+
* description: 'Format depends on provider. For "crowdin" - object with fileId→languages mapping. For "integration" - array of file objects.'
|
|
207
335
|
* oneOf:
|
|
208
|
-
* -
|
|
209
|
-
* -
|
|
336
|
+
* - $ref: '#/components/schemas/CrowdinSyncSettingsResponse'
|
|
337
|
+
* - $ref: '#/components/schemas/IntegrationSyncSettingsResponse'
|
|
210
338
|
* FileProgress:
|
|
211
339
|
* title: 'Language Translation Progress'
|
|
212
340
|
* description: 'Language Translation File Progress Response Model'
|
|
@@ -218,6 +346,59 @@
|
|
|
218
346
|
* eTag:
|
|
219
347
|
* type: string
|
|
220
348
|
* example: fd0ea167420ef1687fd16635b9fb67a3
|
|
349
|
+
* language:
|
|
350
|
+
* type: object
|
|
351
|
+
* description: 'Complete language information'
|
|
352
|
+
* nullable: true
|
|
353
|
+
* properties:
|
|
354
|
+
* id:
|
|
355
|
+
* type: string
|
|
356
|
+
* example: uk
|
|
357
|
+
* name:
|
|
358
|
+
* type: string
|
|
359
|
+
* example: Ukrainian
|
|
360
|
+
* editorCode:
|
|
361
|
+
* type: string
|
|
362
|
+
* example: uk
|
|
363
|
+
* twoLettersCode:
|
|
364
|
+
* type: string
|
|
365
|
+
* example: uk
|
|
366
|
+
* threeLettersCode:
|
|
367
|
+
* type: string
|
|
368
|
+
* example: ukr
|
|
369
|
+
* locale:
|
|
370
|
+
* type: string
|
|
371
|
+
* example: uk-UA
|
|
372
|
+
* androidCode:
|
|
373
|
+
* type: string
|
|
374
|
+
* example: uk-rUA
|
|
375
|
+
* osxCode:
|
|
376
|
+
* type: string
|
|
377
|
+
* example: uk.lproj
|
|
378
|
+
* osxLocale:
|
|
379
|
+
* type: string
|
|
380
|
+
* example: uk
|
|
381
|
+
* pluralCategoryNames:
|
|
382
|
+
* type: array
|
|
383
|
+
* items:
|
|
384
|
+
* type: string
|
|
385
|
+
* example: ['one', 'few', 'many', 'other']
|
|
386
|
+
* pluralRules:
|
|
387
|
+
* type: string
|
|
388
|
+
* example: '((n%10==1 && n%100!=11) ? 0 : ...)'
|
|
389
|
+
* pluralExamples:
|
|
390
|
+
* type: array
|
|
391
|
+
* items:
|
|
392
|
+
* type: string
|
|
393
|
+
* example: ['1, 21, 31...', '2-4, 22-24...']
|
|
394
|
+
* textDirection:
|
|
395
|
+
* type: string
|
|
396
|
+
* enum: [ltr, rtl]
|
|
397
|
+
* example: ltr
|
|
398
|
+
* dialectOf:
|
|
399
|
+
* type: string
|
|
400
|
+
* nullable: true
|
|
401
|
+
* example: null
|
|
221
402
|
* words:
|
|
222
403
|
* properties:
|
|
223
404
|
* total:
|
|
@@ -226,6 +407,9 @@
|
|
|
226
407
|
* translated:
|
|
227
408
|
* type: integer
|
|
228
409
|
* example: 3651
|
|
410
|
+
* preTranslateAppliedTo:
|
|
411
|
+
* type: integer
|
|
412
|
+
* example: 0
|
|
229
413
|
* approved:
|
|
230
414
|
* type: integer
|
|
231
415
|
* example: 3637
|
|
@@ -238,16 +422,35 @@
|
|
|
238
422
|
* translated:
|
|
239
423
|
* type: integer
|
|
240
424
|
* example: 2631
|
|
425
|
+
* preTranslateAppliedTo:
|
|
426
|
+
* type: integer
|
|
427
|
+
* example: 0
|
|
241
428
|
* approved:
|
|
242
429
|
* type: integer
|
|
243
430
|
* example: 2622
|
|
244
431
|
* type: object
|
|
245
432
|
* translationProgress:
|
|
246
|
-
* type:
|
|
247
|
-
* example: 86
|
|
433
|
+
* type: string
|
|
434
|
+
* example: '86'
|
|
248
435
|
* approvalProgress:
|
|
249
|
-
* type:
|
|
250
|
-
* example: 86
|
|
436
|
+
* type: string
|
|
437
|
+
* example: '86'
|
|
438
|
+
* qaChecksStatus:
|
|
439
|
+
* type: object
|
|
440
|
+
* description: 'QA checks status information'
|
|
441
|
+
* properties:
|
|
442
|
+
* total:
|
|
443
|
+
* type: integer
|
|
444
|
+
* example: 0
|
|
445
|
+
* inProgress:
|
|
446
|
+
* type: integer
|
|
447
|
+
* example: 0
|
|
448
|
+
* passed:
|
|
449
|
+
* type: integer
|
|
450
|
+
* example: 0
|
|
451
|
+
* failed:
|
|
452
|
+
* type: integer
|
|
453
|
+
* example: 0
|
|
251
454
|
* LoginFieldsResponse:
|
|
252
455
|
* type: object
|
|
253
456
|
* properties:
|
|
@@ -55,7 +55,6 @@
|
|
|
55
55
|
* IntegrationFiles:
|
|
56
56
|
* type: array
|
|
57
57
|
* description: 'List of integration files and folders'
|
|
58
|
-
* example: [{id: '1', name: 'Landing pages'}, {id: '73291251883', name: 'Intro', parentId: '1', type: 'json'}]
|
|
59
58
|
* items:
|
|
60
59
|
* anyOf:
|
|
61
60
|
* - type: object
|
|
@@ -70,6 +69,17 @@
|
|
|
70
69
|
* parentId:
|
|
71
70
|
* type: string
|
|
72
71
|
* description: 'Parent folder identifier'
|
|
72
|
+
* path:
|
|
73
|
+
* type: string
|
|
74
|
+
* description: 'Full path to the folder'
|
|
75
|
+
* createdAt:
|
|
76
|
+
* type: string
|
|
77
|
+
* format: date-time
|
|
78
|
+
* description: 'Folder creation timestamp (ISO 8601)'
|
|
79
|
+
* updatedAt:
|
|
80
|
+
* type: string
|
|
81
|
+
* format: date-time
|
|
82
|
+
* description: 'Folder last update timestamp (ISO 8601)'
|
|
73
83
|
* - type: object
|
|
74
84
|
* description: 'File'
|
|
75
85
|
* properties:
|
|
@@ -85,18 +95,29 @@
|
|
|
85
95
|
* type:
|
|
86
96
|
* type: string
|
|
87
97
|
* description: 'File type (e.g., json, xml, html)'
|
|
98
|
+
* path:
|
|
99
|
+
* type: string
|
|
100
|
+
* description: 'Full path to the file'
|
|
101
|
+
* createdAt:
|
|
102
|
+
* type: string
|
|
103
|
+
* format: date-time
|
|
104
|
+
* description: 'File creation timestamp (ISO 8601)'
|
|
105
|
+
* updatedAt:
|
|
106
|
+
* type: string
|
|
107
|
+
* format: date-time
|
|
108
|
+
* description: 'File last update timestamp (ISO 8601)'
|
|
88
109
|
* isNew:
|
|
89
110
|
* type: boolean
|
|
90
|
-
* description: 'Whether file is new (
|
|
111
|
+
* description: 'Whether file is new (created after last sync)'
|
|
91
112
|
* isUpdated:
|
|
92
113
|
* type: boolean
|
|
93
114
|
* description: 'Whether file was updated since last sync'
|
|
94
115
|
* notSynced:
|
|
95
116
|
* type: boolean
|
|
96
|
-
* description: 'Whether file was never synced'
|
|
117
|
+
* description: 'Whether file was never synced to Crowdin'
|
|
97
118
|
* synced:
|
|
98
119
|
* type: boolean
|
|
99
|
-
* description: 'Whether file
|
|
120
|
+
* description: 'Whether file was previously synced to Crowdin'
|
|
100
121
|
* UpdateCrowdinFiles:
|
|
101
122
|
* title: 'Sync Files to Crowdin'
|
|
102
123
|
* required:
|
|
@@ -146,9 +167,19 @@
|
|
|
146
167
|
* example: '067da473-fc0b-43e3-b0a2-09d26af130c1'
|
|
147
168
|
* SettingsData:
|
|
148
169
|
* type: object
|
|
149
|
-
*
|
|
150
|
-
* additionalProperties:
|
|
151
|
-
*
|
|
170
|
+
* description: 'Application configuration settings. Fields depend on integration implementation.'
|
|
171
|
+
* additionalProperties: true
|
|
172
|
+
* example:
|
|
173
|
+
* schedule: '3'
|
|
174
|
+
* condition: '1'
|
|
175
|
+
* new-crowdin-files: true
|
|
176
|
+
* new-integration-files: false
|
|
177
|
+
* inContext: false
|
|
178
|
+
* importEqSuggestions: true
|
|
179
|
+
* autoApproveImported: false
|
|
180
|
+
* translateHidden: false
|
|
181
|
+
* includeByFilePath: '/content/**'
|
|
182
|
+
* excludeByFilePath: '/drafts/**'
|
|
152
183
|
* UpdateSettingsData:
|
|
153
184
|
* title: 'Update Application Settings'
|
|
154
185
|
* required:
|
|
@@ -163,33 +194,128 @@
|
|
|
163
194
|
* $ref: '#/components/schemas/SettingsData'
|
|
164
195
|
* SettingsResponse:
|
|
165
196
|
* $ref: '#/components/schemas/SettingsData'
|
|
197
|
+
* SettingsSchemaResponse:
|
|
198
|
+
* type: array
|
|
199
|
+
* description: 'List of configuration fields with metadata'
|
|
200
|
+
* items:
|
|
201
|
+
* type: object
|
|
202
|
+
* properties:
|
|
203
|
+
* key:
|
|
204
|
+
* type: string
|
|
205
|
+
* description: 'Unique field identifier'
|
|
206
|
+
* example: 'schedule'
|
|
207
|
+
* label:
|
|
208
|
+
* type: string
|
|
209
|
+
* description: 'Human-readable field label'
|
|
210
|
+
* example: 'Sync schedule'
|
|
211
|
+
* labelHtml:
|
|
212
|
+
* type: string
|
|
213
|
+
* description: 'HTML label (alternative to label)'
|
|
214
|
+
* type:
|
|
215
|
+
* type: string
|
|
216
|
+
* enum: [checkbox, text, select, textarea, notice, password, file]
|
|
217
|
+
* description: 'Field input type'
|
|
218
|
+
* example: 'select'
|
|
219
|
+
* defaultValue:
|
|
220
|
+
* type: string
|
|
221
|
+
* description: 'Default value for the field'
|
|
222
|
+
* example: '0'
|
|
223
|
+
* helpText:
|
|
224
|
+
* type: string
|
|
225
|
+
* description: 'Plain text help description'
|
|
226
|
+
* helpTextHtml:
|
|
227
|
+
* type: string
|
|
228
|
+
* description: 'HTML help description'
|
|
229
|
+
* category:
|
|
230
|
+
* type: string
|
|
231
|
+
* description: 'Field category (general, sync, advanced)'
|
|
232
|
+
* example: 'sync'
|
|
233
|
+
* position:
|
|
234
|
+
* type: integer
|
|
235
|
+
* description: 'Display order within category'
|
|
236
|
+
* example: 0
|
|
237
|
+
* options:
|
|
238
|
+
* type: array
|
|
239
|
+
* description: 'Available options (for select type)'
|
|
240
|
+
* items:
|
|
241
|
+
* type: object
|
|
242
|
+
* properties:
|
|
243
|
+
* value:
|
|
244
|
+
* type: string
|
|
245
|
+
* label:
|
|
246
|
+
* type: string
|
|
247
|
+
* dependencySettings:
|
|
248
|
+
* type: string
|
|
249
|
+
* description: 'JSON string defining field visibility rules'
|
|
250
|
+
* isSearchable:
|
|
251
|
+
* type: boolean
|
|
252
|
+
* description: 'Allow searching options (for select type)'
|
|
253
|
+
* isMulti:
|
|
254
|
+
* type: boolean
|
|
255
|
+
* description: 'Allow multiple selection (for select type)'
|
|
256
|
+
* noticeType:
|
|
257
|
+
* type: string
|
|
258
|
+
* enum: [info, warning, danger, success]
|
|
259
|
+
* description: 'Notice type (for notice type fields)'
|
|
260
|
+
* noIcon:
|
|
261
|
+
* type: boolean
|
|
262
|
+
* description: 'Hide icon in notice (for notice type)'
|
|
166
263
|
* CrowdinSyncSettingsResponse:
|
|
167
264
|
* type: object
|
|
168
|
-
*
|
|
169
|
-
* 102: ['uk', 'de']
|
|
265
|
+
* description: 'Mapping of Crowdin file IDs to target language codes for auto-sync'
|
|
170
266
|
* additionalProperties:
|
|
171
267
|
* type: array
|
|
268
|
+
* description: 'Array of language codes to sync for this file'
|
|
172
269
|
* items:
|
|
173
270
|
* type: string
|
|
271
|
+
* description: 'Language code (e.g., uk, de, fr)'
|
|
272
|
+
* example:
|
|
273
|
+
* '102': ['uk', 'de', 'fr']
|
|
274
|
+
* '999': ['uk', 'es']
|
|
174
275
|
* IntegrationSyncSettingsResponse:
|
|
175
276
|
* type: array
|
|
277
|
+
* description: 'List of integration files configured for auto-sync with their current status'
|
|
176
278
|
* items:
|
|
177
279
|
* type: object
|
|
280
|
+
* required:
|
|
281
|
+
* - id
|
|
282
|
+
* - name
|
|
283
|
+
* - node_type
|
|
178
284
|
* properties:
|
|
179
|
-
* name:
|
|
180
|
-
* type: string
|
|
181
285
|
* id:
|
|
182
286
|
* type: string
|
|
183
|
-
*
|
|
287
|
+
* description: 'Unique file identifier'
|
|
288
|
+
* name:
|
|
289
|
+
* type: string
|
|
290
|
+
* description: 'File name'
|
|
291
|
+
* parent_id:
|
|
184
292
|
* type: string
|
|
293
|
+
* description: 'Parent folder identifier'
|
|
185
294
|
* type:
|
|
186
295
|
* type: string
|
|
296
|
+
* description: 'File type (e.g., html, json)'
|
|
187
297
|
* node_type:
|
|
188
298
|
* $ref: '#/components/schemas/NodeType'
|
|
189
299
|
* schedule:
|
|
190
300
|
* type: boolean
|
|
301
|
+
* description: 'Whether auto-sync is enabled for this file'
|
|
302
|
+
* sync:
|
|
303
|
+
* type: boolean
|
|
304
|
+
* description: 'Sync status flag'
|
|
305
|
+
* isNew:
|
|
306
|
+
* type: boolean
|
|
307
|
+
* description: 'Whether file is new (created after last sync)'
|
|
308
|
+
* isUpdated:
|
|
309
|
+
* type: boolean
|
|
310
|
+
* description: 'Whether file was updated since last sync'
|
|
311
|
+
* notSynced:
|
|
312
|
+
* type: boolean
|
|
313
|
+
* description: 'Whether file was never synced to Crowdin'
|
|
314
|
+
* synced:
|
|
315
|
+
* type: boolean
|
|
316
|
+
* description: 'Whether file was previously synced to Crowdin'
|
|
191
317
|
* UpdateSyncSettingsData:
|
|
192
|
-
* title: 'Update
|
|
318
|
+
* title: 'Update Auto-Sync Files Configuration'
|
|
193
319
|
* required:
|
|
194
320
|
* - projectId
|
|
195
321
|
* - provider
|
|
@@ -201,13 +327,15 @@
|
|
|
201
327
|
* example: 12
|
|
202
328
|
* provider:
|
|
203
329
|
* type: string
|
|
330
|
+
* description: 'Sync direction: "crowdin" for Crowdin→Integration, "integration" for Integration→Crowdin'
|
|
204
331
|
* enum:
|
|
205
332
|
* - crowdin
|
|
206
333
|
* - integration
|
|
207
334
|
* files:
|
|
335
|
+
* description: 'Format depends on provider. For "crowdin" - object with fileId→languages mapping. For "integration" - array of file objects.'
|
|
208
336
|
* oneOf:
|
|
209
|
-
* -
|
|
210
|
-
* -
|
|
337
|
+
* - $ref: '#/components/schemas/CrowdinSyncSettingsResponse'
|
|
338
|
+
* - $ref: '#/components/schemas/IntegrationSyncSettingsResponse'
|
|
211
339
|
* FileProgress:
|
|
212
340
|
* title: 'Language Translation Progress'
|
|
213
341
|
* description: 'Language Translation File Progress Response Model'
|
|
@@ -219,6 +347,59 @@
|
|
|
219
347
|
* eTag:
|
|
220
348
|
* type: string
|
|
221
349
|
* example: fd0ea167420ef1687fd16635b9fb67a3
|
|
350
|
+
* language:
|
|
351
|
+
* type: object
|
|
352
|
+
* description: 'Complete language information'
|
|
353
|
+
* nullable: true
|
|
354
|
+
* properties:
|
|
355
|
+
* id:
|
|
356
|
+
* type: string
|
|
357
|
+
* example: uk
|
|
358
|
+
* name:
|
|
359
|
+
* type: string
|
|
360
|
+
* example: Ukrainian
|
|
361
|
+
* editorCode:
|
|
362
|
+
* type: string
|
|
363
|
+
* example: uk
|
|
364
|
+
* twoLettersCode:
|
|
365
|
+
* type: string
|
|
366
|
+
* example: uk
|
|
367
|
+
* threeLettersCode:
|
|
368
|
+
* type: string
|
|
369
|
+
* example: ukr
|
|
370
|
+
* locale:
|
|
371
|
+
* type: string
|
|
372
|
+
* example: uk-UA
|
|
373
|
+
* androidCode:
|
|
374
|
+
* type: string
|
|
375
|
+
* example: uk-rUA
|
|
376
|
+
* osxCode:
|
|
377
|
+
* type: string
|
|
378
|
+
* example: uk.lproj
|
|
379
|
+
* osxLocale:
|
|
380
|
+
* type: string
|
|
381
|
+
* example: uk
|
|
382
|
+
* pluralCategoryNames:
|
|
383
|
+
* type: array
|
|
384
|
+
* items:
|
|
385
|
+
* type: string
|
|
386
|
+
* example: ['one', 'few', 'many', 'other']
|
|
387
|
+
* pluralRules:
|
|
388
|
+
* type: string
|
|
389
|
+
* example: '((n%10==1 && n%100!=11) ? 0 : ...)'
|
|
390
|
+
* pluralExamples:
|
|
391
|
+
* type: array
|
|
392
|
+
* items:
|
|
393
|
+
* type: string
|
|
394
|
+
* example: ['1, 21, 31...', '2-4, 22-24...']
|
|
395
|
+
* textDirection:
|
|
396
|
+
* type: string
|
|
397
|
+
* enum: [ltr, rtl]
|
|
398
|
+
* example: ltr
|
|
399
|
+
* dialectOf:
|
|
400
|
+
* type: string
|
|
401
|
+
* nullable: true
|
|
402
|
+
* example: null
|
|
222
403
|
* words:
|
|
223
404
|
* properties:
|
|
224
405
|
* total:
|
|
@@ -227,6 +408,9 @@
|
|
|
227
408
|
* translated:
|
|
228
409
|
* type: integer
|
|
229
410
|
* example: 3651
|
|
411
|
+
* preTranslateAppliedTo:
|
|
412
|
+
* type: integer
|
|
413
|
+
* example: 0
|
|
230
414
|
* approved:
|
|
231
415
|
* type: integer
|
|
232
416
|
* example: 3637
|
|
@@ -239,16 +423,35 @@
|
|
|
239
423
|
* translated:
|
|
240
424
|
* type: integer
|
|
241
425
|
* example: 2631
|
|
426
|
+
* preTranslateAppliedTo:
|
|
427
|
+
* type: integer
|
|
428
|
+
* example: 0
|
|
242
429
|
* approved:
|
|
243
430
|
* type: integer
|
|
244
431
|
* example: 2622
|
|
245
432
|
* type: object
|
|
246
433
|
* translationProgress:
|
|
247
|
-
* type:
|
|
248
|
-
* example: 86
|
|
434
|
+
* type: string
|
|
435
|
+
* example: '86'
|
|
249
436
|
* approvalProgress:
|
|
250
|
-
* type:
|
|
251
|
-
* example: 86
|
|
437
|
+
* type: string
|
|
438
|
+
* example: '86'
|
|
439
|
+
* qaChecksStatus:
|
|
440
|
+
* type: object
|
|
441
|
+
* description: 'QA checks status information'
|
|
442
|
+
* properties:
|
|
443
|
+
* total:
|
|
444
|
+
* type: integer
|
|
445
|
+
* example: 0
|
|
446
|
+
* inProgress:
|
|
447
|
+
* type: integer
|
|
448
|
+
* example: 0
|
|
449
|
+
* passed:
|
|
450
|
+
* type: integer
|
|
451
|
+
* example: 0
|
|
452
|
+
* failed:
|
|
453
|
+
* type: integer
|
|
454
|
+
* example: 0
|
|
252
455
|
* LoginFieldsResponse:
|
|
253
456
|
* type: object
|
|
254
457
|
* properties:
|