@crowdin/app-project-module 1.10.0 → 1.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.
@@ -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 (not synced before)'
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 is synced'
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
- * example: {schedule: 0, condition: 0}
149
- * additionalProperties:
150
- * type: string
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
- * example:
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
- * parentId:
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 Application Sync Settings'
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
- * - { $ref: '#/components/schemas/CrowdinSyncSettingsResponse' }
209
- * - { $ref: '#/components/schemas/IntegrationSyncSettingsResponse' }
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: integer
247
- * example: 86
433
+ * type: string
434
+ * example: '86'
248
435
  * approvalProgress:
249
- * type: integer
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 (not synced before)'
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 is synced'
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
- * example: {schedule: 0, condition: 0}
150
- * additionalProperties:
151
- * type: string
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
- * example:
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
- * parentId:
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 Application Sync Settings'
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
- * - { $ref: '#/components/schemas/CrowdinSyncSettingsResponse' }
210
- * - { $ref: '#/components/schemas/IntegrationSyncSettingsResponse' }
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: integer
248
- * example: 86
434
+ * type: string
435
+ * example: '86'
249
436
  * approvalProgress:
250
- * type: integer
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: