crowdin-api 1.14.0 → 1.15.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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -0
  3. data/.rubocop_todo.yml +1 -0
  4. data/AGENTS.md +63 -0
  5. data/CLAUDE.md +1 -0
  6. data/Gemfile.lock +1 -1
  7. data/README.md +1 -1
  8. data/lib/crowdin-api/api_resources/advisor.rb +86 -0
  9. data/lib/crowdin-api/api_resources/ai.rb +974 -0
  10. data/lib/crowdin-api/api_resources/applications.rb +247 -10
  11. data/lib/crowdin-api/api_resources/bundles.rb +45 -29
  12. data/lib/crowdin-api/api_resources/clients.rb +23 -0
  13. data/lib/crowdin-api/api_resources/custom_spellcheckers.rb +36 -0
  14. data/lib/crowdin-api/api_resources/dictionaries.rb +5 -5
  15. data/lib/crowdin-api/api_resources/distributions.rb +15 -15
  16. data/lib/crowdin-api/api_resources/external_qa_checks.rb +36 -0
  17. data/lib/crowdin-api/api_resources/fields.rb +78 -0
  18. data/lib/crowdin-api/api_resources/glossaries.rb +62 -50
  19. data/lib/crowdin-api/api_resources/integrations.rb +201 -0
  20. data/lib/crowdin-api/api_resources/labels.rb +32 -0
  21. data/lib/crowdin-api/api_resources/languages.rb +16 -0
  22. data/lib/crowdin-api/api_resources/machine_translation_engines.rb +17 -0
  23. data/lib/crowdin-api/api_resources/notifications.rb +15 -6
  24. data/lib/crowdin-api/api_resources/organization.rb +33 -0
  25. data/lib/crowdin-api/api_resources/organization_webhooks.rb +71 -0
  26. data/lib/crowdin-api/api_resources/placeholders.rb +182 -0
  27. data/lib/crowdin-api/api_resources/projects.rb +137 -41
  28. data/lib/crowdin-api/api_resources/reports.rb +310 -26
  29. data/lib/crowdin-api/api_resources/screenshots.rb +48 -0
  30. data/lib/crowdin-api/api_resources/security_logs.rb +63 -0
  31. data/lib/crowdin-api/api_resources/source_files.rb +370 -65
  32. data/lib/crowdin-api/api_resources/source_strings.rb +62 -0
  33. data/lib/crowdin-api/api_resources/storages.rb +11 -11
  34. data/lib/crowdin-api/api_resources/string_comments.rb +46 -0
  35. data/lib/crowdin-api/api_resources/string_corrections.rb +21 -6
  36. data/lib/crowdin-api/api_resources/string_translations.rb +96 -0
  37. data/lib/crowdin-api/api_resources/style_guides.rb +71 -0
  38. data/lib/crowdin-api/api_resources/tasks.rb +140 -10
  39. data/lib/crowdin-api/api_resources/teams.rb +99 -0
  40. data/lib/crowdin-api/api_resources/translation_memory.rb +138 -0
  41. data/lib/crowdin-api/api_resources/translation_status.rb +65 -0
  42. data/lib/crowdin-api/api_resources/translations.rb +122 -2
  43. data/lib/crowdin-api/api_resources/users.rb +136 -6
  44. data/lib/crowdin-api/api_resources/vendors.rb +2 -0
  45. data/lib/crowdin-api/api_resources/webhooks.rb +16 -0
  46. data/lib/crowdin-api/api_resources/workflows.rb +24 -0
  47. data/lib/crowdin-api/client/version.rb +1 -1
  48. data/lib/crowdin-api/core/request.rb +1 -1
  49. data/lib/crowdin-api.rb +3 -1
  50. data/spec/api_resources/advisor_spec.rb +45 -0
  51. data/spec/api_resources/ai_spec.rb +863 -0
  52. data/spec/api_resources/applications_spec.rb +138 -0
  53. data/spec/api_resources/bundles_spec.rb +8 -0
  54. data/spec/api_resources/clients_spec.rb +13 -0
  55. data/spec/api_resources/custom_spellcheckers_spec.rb +21 -0
  56. data/spec/api_resources/external_qa_checks_spec.rb +21 -0
  57. data/spec/api_resources/fields_spec.rb +45 -0
  58. data/spec/api_resources/glossaries_spec.rb +18 -0
  59. data/spec/api_resources/integrations_spec.rb +117 -0
  60. data/spec/api_resources/organization_spec.rb +21 -0
  61. data/spec/api_resources/organization_webhooks_spec.rb +45 -0
  62. data/spec/api_resources/placeholders_spec.rb +103 -0
  63. data/spec/api_resources/projects_spec.rb +58 -0
  64. data/spec/api_resources/reports_spec.rb +221 -0
  65. data/spec/api_resources/security_logs_spec.rb +39 -0
  66. data/spec/api_resources/source_files_spec.rb +182 -0
  67. data/spec/api_resources/source_strings_spec.rb +26 -0
  68. data/spec/api_resources/string_comments_spec.rb +18 -0
  69. data/spec/api_resources/string_corrections_spec.rb +25 -19
  70. data/spec/api_resources/string_translations_spec.rb +26 -0
  71. data/spec/api_resources/style_guides_spec.rb +45 -0
  72. data/spec/api_resources/tasks_spec.rb +60 -0
  73. data/spec/api_resources/teams_spec.rb +42 -0
  74. data/spec/api_resources/translation_memory_spec.rb +58 -0
  75. data/spec/api_resources/translation_status_spec.rb +26 -0
  76. data/spec/api_resources/translations_spec.rb +42 -0
  77. data/spec/api_resources/users_spec.rb +84 -0
  78. data/spec/api_resources/workflows_spec.rb +10 -0
  79. metadata +27 -1
@@ -0,0 +1,863 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe Crowdin::ApiResources::Ai do
4
+ describe 'Default endpoints' do
5
+ describe '#get_project_ai_settings' do
6
+ it 'when request are valid', :default do
7
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/projects/#{project_id}/ai/settings")
8
+ result = @crowdin.get_project_ai_settings(project_id)
9
+ expect(result).to eq(200)
10
+ end
11
+ end
12
+
13
+ describe '#ai_file_translations' do
14
+ it 'when request are valid', :default do
15
+ stub_request(:post, "https://api.crowdin.com/#{target_api_url}/users/1/ai/file-translations")
16
+ result = @crowdin.ai_file_translations({}, 1)
17
+ expect(result).to eq(200)
18
+ end
19
+ end
20
+
21
+ describe '#cancel_file_translations' do
22
+ it 'when request are valid', :default do
23
+ stub_request(:delete, "https://api.crowdin.com/#{target_api_url}/users/1/ai/file-translations/1")
24
+ result = @crowdin.cancel_file_translations(1, 1)
25
+ expect(result).to eq(200)
26
+ end
27
+ end
28
+
29
+ describe '#get_file_translations_status' do
30
+ it 'when request are valid', :default do
31
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/file-translations/1")
32
+ result = @crowdin.get_file_translations_status(1, 1)
33
+ expect(result).to eq(200)
34
+ end
35
+ end
36
+
37
+ describe '#download_translated_file' do
38
+ it 'when request are valid', :default do
39
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/file-translations/1/download")
40
+ result = @crowdin.download_translated_file(1, nil, 1)
41
+ expect(result).to eq(200)
42
+ end
43
+ end
44
+
45
+ describe '#download_translated_file_strings' do
46
+ it 'when request are valid', :default do
47
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/file-translations/1/translations")
48
+ result = @crowdin.download_translated_file_strings(1, nil, 1)
49
+ expect(result).to eq(200)
50
+ end
51
+ end
52
+
53
+ describe '#list_ai_prompts' do
54
+ it 'when request are valid', :default do
55
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts")
56
+ result = @crowdin.list_ai_prompts({}, 1)
57
+ expect(result).to eq(200)
58
+ end
59
+ end
60
+
61
+ describe '#add_ai_prompt' do
62
+ it 'when request are valid', :default do
63
+ stub_request(:post, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts")
64
+ result = @crowdin.add_ai_prompt({}, 1)
65
+ expect(result).to eq(200)
66
+ end
67
+ end
68
+
69
+ describe '#list_ai_prompt_fine_tuning_jobs' do
70
+ it 'when request are valid', :default do
71
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts/fine-tuning/jobs")
72
+ result = @crowdin.list_ai_prompt_fine_tuning_jobs({}, 1)
73
+ expect(result).to eq(200)
74
+ end
75
+ end
76
+
77
+ describe '#delete_ai_prompt' do
78
+ it 'when request are valid', :default do
79
+ stub_request(:delete, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts/1")
80
+ result = @crowdin.delete_ai_prompt(1, 1)
81
+ expect(result).to eq(200)
82
+ end
83
+ end
84
+
85
+ describe '#get_ai_prompt' do
86
+ it 'when request are valid', :default do
87
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts/1")
88
+ result = @crowdin.get_ai_prompt(1, 1)
89
+ expect(result).to eq(200)
90
+ end
91
+ end
92
+
93
+ describe '#edit_ai_prompt' do
94
+ it 'when request are valid', :default do
95
+ stub_request(:patch, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts/1")
96
+ result = @crowdin.edit_ai_prompt(1, [], 1)
97
+ expect(result).to eq(200)
98
+ end
99
+ end
100
+
101
+ describe '#clone_ai_prompt' do
102
+ it 'when request are valid', :default do
103
+ stub_request(:post, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts/1/clones")
104
+ result = @crowdin.clone_ai_prompt(1, {}, 1)
105
+ expect(result).to eq(200)
106
+ end
107
+ end
108
+
109
+ describe '#generate_ai_prompt_completion' do
110
+ it 'when request are valid', :default do
111
+ stub_request(:post, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts/1/completions")
112
+ result = @crowdin.generate_ai_prompt_completion(1, {}, 1)
113
+ expect(result).to eq(200)
114
+ end
115
+ end
116
+
117
+ describe '#cancel_ai_prompt_completion' do
118
+ it 'when request are valid', :default do
119
+ stub_request(:delete, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts/1/completions/1")
120
+ result = @crowdin.cancel_ai_prompt_completion(1, 1, 1)
121
+ expect(result).to eq(200)
122
+ end
123
+ end
124
+
125
+ describe '#get_ai_prompt_completion_status' do
126
+ it 'when request are valid', :default do
127
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts/1/completions/1")
128
+ result = @crowdin.get_ai_prompt_completion_status(1, 1, 1)
129
+ expect(result).to eq(200)
130
+ end
131
+ end
132
+
133
+ describe '#download_ai_prompt_completion' do
134
+ it 'when request are valid', :default do
135
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts/1/completions/1/download")
136
+ result = @crowdin.download_ai_prompt_completion(1, 1, nil, 1)
137
+ expect(result).to eq(200)
138
+ end
139
+ end
140
+
141
+ describe '#generate_ai_prompt_fine_tuning_dataset' do
142
+ it 'when request are valid', :default do
143
+ stub_request(:post, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts/1/fine-tuning/datasets")
144
+ result = @crowdin.generate_ai_prompt_fine_tuning_dataset(1, {}, 1)
145
+ expect(result).to eq(200)
146
+ end
147
+ end
148
+
149
+ describe '#get_ai_prompt_fine_tuning_dataset_generation_status' do
150
+ it 'when request are valid', :default do
151
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts/1/fine-tuning/datasets/1")
152
+ result = @crowdin.get_ai_prompt_fine_tuning_dataset_generation_status(1, 1, 1)
153
+ expect(result).to eq(200)
154
+ end
155
+ end
156
+
157
+ describe '#download_ai_prompt_fine_tuning_dataset' do
158
+ it 'when request are valid', :default do
159
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts/1/fine-tuning/datasets/1/download")
160
+ result = @crowdin.download_ai_prompt_fine_tuning_dataset(1, 1, nil, 1)
161
+ expect(result).to eq(200)
162
+ end
163
+ end
164
+
165
+ describe '#create_ai_prompt_fine_tuning_job' do
166
+ it 'when request are valid', :default do
167
+ stub_request(:post, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts/1/fine-tuning/jobs")
168
+ result = @crowdin.create_ai_prompt_fine_tuning_job(1, {}, 1)
169
+ expect(result).to eq(200)
170
+ end
171
+ end
172
+
173
+ describe '#get_ai_prompt_fine_tuning_job_status' do
174
+ it 'when request are valid', :default do
175
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts/1/fine-tuning/jobs/1")
176
+ result = @crowdin.get_ai_prompt_fine_tuning_job_status(1, 1, 1)
177
+ expect(result).to eq(200)
178
+ end
179
+ end
180
+
181
+ describe '#list_ai_prompt_fine_tuning_events' do
182
+ it 'when request are valid', :default do
183
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/prompts/1/fine-tuning/jobs/1/events")
184
+ result = @crowdin.list_ai_prompt_fine_tuning_events(1, 1, 1)
185
+ expect(result).to eq(200)
186
+ end
187
+ end
188
+
189
+ describe '#list_ai_providers' do
190
+ it 'when request are valid', :default do
191
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/providers")
192
+ result = @crowdin.list_ai_providers({}, 1)
193
+ expect(result).to eq(200)
194
+ end
195
+ end
196
+
197
+ describe '#add_ai_provider' do
198
+ it 'when request are valid', :default do
199
+ stub_request(:post, "https://api.crowdin.com/#{target_api_url}/users/1/ai/providers")
200
+ result = @crowdin.add_ai_provider({}, 1)
201
+ expect(result).to eq(200)
202
+ end
203
+ end
204
+
205
+ describe '#list_all_ai_provider_models' do
206
+ it 'when request are valid', :default do
207
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/providers/models")
208
+ result = @crowdin.list_all_ai_provider_models(1)
209
+ expect(result).to eq(200)
210
+ end
211
+ end
212
+
213
+ describe '#list_supported_ai_provider_models' do
214
+ it 'when request are valid', :default do
215
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/providers/supported-models")
216
+ result = @crowdin.list_supported_ai_provider_models({}, 1)
217
+ expect(result).to eq(200)
218
+ end
219
+ end
220
+
221
+ describe '#delete_ai_provider' do
222
+ it 'when request are valid', :default do
223
+ stub_request(:delete, "https://api.crowdin.com/#{target_api_url}/users/1/ai/providers/1")
224
+ result = @crowdin.delete_ai_provider(1, 1)
225
+ expect(result).to eq(200)
226
+ end
227
+ end
228
+
229
+ describe '#get_ai_provider' do
230
+ it 'when request are valid', :default do
231
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/providers/1")
232
+ result = @crowdin.get_ai_provider(1, 1)
233
+ expect(result).to eq(200)
234
+ end
235
+ end
236
+
237
+ describe '#edit_ai_provider' do
238
+ it 'when request are valid', :default do
239
+ stub_request(:patch, "https://api.crowdin.com/#{target_api_url}/users/1/ai/providers/1")
240
+ result = @crowdin.edit_ai_provider(1, [], 1)
241
+ expect(result).to eq(200)
242
+ end
243
+ end
244
+
245
+ describe '#create_ai_proxy_chat_completion' do
246
+ it 'when request are valid', :default do
247
+ stub_request(:post, "https://api.crowdin.com/#{target_api_url}/users/1/ai/providers/1/chat/completions")
248
+ result = @crowdin.create_ai_proxy_chat_completion(1, {}, 1)
249
+ expect(result).to eq(200)
250
+ end
251
+ end
252
+
253
+ describe '#ai_gateway_delete' do
254
+ it 'when request are valid', :default do
255
+ stub_request(:delete, "https://api.crowdin.com/#{target_api_url}/users/1/ai/providers/1/gateway/1")
256
+ result = @crowdin.ai_gateway_delete(1, 1, 1)
257
+ expect(result).to eq(200)
258
+ end
259
+ end
260
+
261
+ describe '#ai_gateway_get' do
262
+ it 'when request are valid', :default do
263
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/providers/1/gateway/1")
264
+ result = @crowdin.ai_gateway_get(1, 1, 1)
265
+ expect(result).to eq(200)
266
+ end
267
+ end
268
+
269
+ describe '#ai_gateway_patch' do
270
+ it 'when request are valid', :default do
271
+ stub_request(:patch, "https://api.crowdin.com/#{target_api_url}/users/1/ai/providers/1/gateway/1")
272
+ result = @crowdin.ai_gateway_patch(1, 1, {}, 1)
273
+ expect(result).to eq(200)
274
+ end
275
+ end
276
+
277
+ describe '#ai_gateway_post' do
278
+ it 'when request are valid', :default do
279
+ stub_request(:post, "https://api.crowdin.com/#{target_api_url}/users/1/ai/providers/1/gateway/1")
280
+ result = @crowdin.ai_gateway_post(1, 1, {}, 1)
281
+ expect(result).to eq(200)
282
+ end
283
+ end
284
+
285
+ describe '#ai_gateway_put' do
286
+ it 'when request are valid', :default do
287
+ stub_request(:put, "https://api.crowdin.com/#{target_api_url}/users/1/ai/providers/1/gateway/1")
288
+ result = @crowdin.ai_gateway_put(1, 1, {}, 1)
289
+ expect(result).to eq(200)
290
+ end
291
+ end
292
+
293
+ describe '#list_ai_provider_models' do
294
+ it 'when request are valid', :default do
295
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/providers/1/models")
296
+ result = @crowdin.list_ai_provider_models(1, 1)
297
+ expect(result).to eq(200)
298
+ end
299
+ end
300
+
301
+ describe '#generate_ai_report' do
302
+ it 'when request are valid', :default do
303
+ stub_request(:post, "https://api.crowdin.com/#{target_api_url}/users/1/ai/reports")
304
+ result = @crowdin.generate_ai_report({}, 1)
305
+ expect(result).to eq(200)
306
+ end
307
+ end
308
+
309
+ describe '#check_ai_report_generation_status' do
310
+ it 'when request are valid', :default do
311
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/reports/1")
312
+ result = @crowdin.check_ai_report_generation_status(1, 1)
313
+ expect(result).to eq(200)
314
+ end
315
+ end
316
+
317
+ describe '#download_ai_report' do
318
+ it 'when request are valid', :default do
319
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/reports/1/download")
320
+ result = @crowdin.download_ai_report(1, nil, 1)
321
+ expect(result).to eq(200)
322
+ end
323
+ end
324
+
325
+ describe '#list_ai_request_logs' do
326
+ it 'when request are valid', :default do
327
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/request-logs")
328
+ result = @crowdin.list_ai_request_logs({}, 1)
329
+ expect(result).to eq(200)
330
+ end
331
+ end
332
+
333
+ describe '#export_ai_request_logs' do
334
+ it 'when request are valid', :default do
335
+ stub_request(:post, "https://api.crowdin.com/#{target_api_url}/users/1/ai/request-logs/exports")
336
+ result = @crowdin.export_ai_request_logs({}, 1)
337
+ expect(result).to eq(200)
338
+ end
339
+ end
340
+
341
+ describe '#check_ai_request_logs_export_status' do
342
+ it 'when request are valid', :default do
343
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/request-logs/exports/1")
344
+ result = @crowdin.check_ai_request_logs_export_status(1, 1)
345
+ expect(result).to eq(200)
346
+ end
347
+ end
348
+
349
+ describe '#download_ai_request_logs_export' do
350
+ it 'when request are valid', :default do
351
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/request-logs/exports/1/download")
352
+ result = @crowdin.download_ai_request_logs_export(1, nil, 1)
353
+ expect(result).to eq(200)
354
+ end
355
+ end
356
+
357
+ describe '#get_ai_settings' do
358
+ it 'when request are valid', :default do
359
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/settings")
360
+ result = @crowdin.get_ai_settings(1)
361
+ expect(result).to eq(200)
362
+ end
363
+ end
364
+
365
+ describe '#edit_ai_settings' do
366
+ it 'when request are valid', :default do
367
+ stub_request(:patch, "https://api.crowdin.com/#{target_api_url}/users/1/ai/settings")
368
+ result = @crowdin.edit_ai_settings([], 1)
369
+ expect(result).to eq(200)
370
+ end
371
+ end
372
+
373
+ describe '#list_ai_snippets' do
374
+ it 'when request are valid', :default do
375
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/settings/snippets")
376
+ result = @crowdin.list_ai_snippets({}, 1)
377
+ expect(result).to eq(200)
378
+ end
379
+ end
380
+
381
+ describe '#add_ai_snippet' do
382
+ it 'when request are valid', :default do
383
+ stub_request(:post, "https://api.crowdin.com/#{target_api_url}/users/1/ai/settings/snippets")
384
+ result = @crowdin.add_ai_snippet({}, 1)
385
+ expect(result).to eq(200)
386
+ end
387
+ end
388
+
389
+ describe '#delete_ai_snippet' do
390
+ it 'when request are valid', :default do
391
+ stub_request(:delete, "https://api.crowdin.com/#{target_api_url}/users/1/ai/settings/snippets/1")
392
+ result = @crowdin.delete_ai_snippet(1, 1)
393
+ expect(result).to eq(200)
394
+ end
395
+ end
396
+
397
+ describe '#get_ai_snippet' do
398
+ it 'when request are valid', :default do
399
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/settings/snippets/1")
400
+ result = @crowdin.get_ai_snippet(1, 1)
401
+ expect(result).to eq(200)
402
+ end
403
+ end
404
+
405
+ describe '#edit_ai_snippet' do
406
+ it 'when request are valid', :default do
407
+ stub_request(:patch, "https://api.crowdin.com/#{target_api_url}/users/1/ai/settings/snippets/1")
408
+ result = @crowdin.edit_ai_snippet(1, [], 1)
409
+ expect(result).to eq(200)
410
+ end
411
+ end
412
+
413
+ describe '#ai_translate_strings' do
414
+ it 'when request are valid', :default do
415
+ stub_request(:post, "https://api.crowdin.com/#{target_api_url}/users/1/ai/translate")
416
+ result = @crowdin.ai_translate_strings({}, 1)
417
+ expect(result).to eq(200)
418
+ end
419
+ end
420
+
421
+ describe '#list_ai_usage_members' do
422
+ it 'when request are valid', :default do
423
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/usage/members")
424
+ result = @crowdin.list_ai_usage_members({}, 1)
425
+ expect(result).to eq(200)
426
+ end
427
+ end
428
+
429
+ describe '#get_ai_usage_member' do
430
+ it 'when request are valid', :default do
431
+ stub_request(:get, "https://api.crowdin.com/#{target_api_url}/users/1/ai/usage/members/1")
432
+ result = @crowdin.get_ai_usage_member(1, 1)
433
+ expect(result).to eq(200)
434
+ end
435
+ end
436
+ end
437
+
438
+ describe 'Enterprise endpoints' do
439
+ describe '#ai_file_translations' do
440
+ it 'when request are valid', :enterprise do
441
+ stub_request(:post, "https://domain.api.crowdin.com/#{target_api_url}/ai/file-translations")
442
+ result = @crowdin.ai_file_translations({})
443
+ expect(result).to eq(200)
444
+ end
445
+ end
446
+
447
+ describe '#cancel_file_translations' do
448
+ it 'when request are valid', :enterprise do
449
+ stub_request(:delete, "https://domain.api.crowdin.com/#{target_api_url}/ai/file-translations/1")
450
+ result = @crowdin.cancel_file_translations(1)
451
+ expect(result).to eq(200)
452
+ end
453
+ end
454
+
455
+ describe '#get_file_translations_status' do
456
+ it 'when request are valid', :enterprise do
457
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/file-translations/1")
458
+ result = @crowdin.get_file_translations_status(1)
459
+ expect(result).to eq(200)
460
+ end
461
+ end
462
+
463
+ describe '#download_translated_file' do
464
+ it 'when request are valid', :enterprise do
465
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/file-translations/1/download")
466
+ result = @crowdin.download_translated_file(1, nil)
467
+ expect(result).to eq(200)
468
+ end
469
+ end
470
+
471
+ describe '#download_translated_file_strings' do
472
+ it 'when request are valid', :enterprise do
473
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/file-translations/1/translations")
474
+ result = @crowdin.download_translated_file_strings(1, nil)
475
+ expect(result).to eq(200)
476
+ end
477
+ end
478
+
479
+ describe '#list_ai_prompts' do
480
+ it 'when request are valid', :enterprise do
481
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts")
482
+ result = @crowdin.list_ai_prompts({})
483
+ expect(result).to eq(200)
484
+ end
485
+ end
486
+
487
+ describe '#add_ai_prompt' do
488
+ it 'when request are valid', :enterprise do
489
+ stub_request(:post, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts")
490
+ result = @crowdin.add_ai_prompt({})
491
+ expect(result).to eq(200)
492
+ end
493
+ end
494
+
495
+ describe '#list_ai_prompt_fine_tuning_jobs' do
496
+ it 'when request are valid', :enterprise do
497
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts/fine-tuning/jobs")
498
+ result = @crowdin.list_ai_prompt_fine_tuning_jobs({})
499
+ expect(result).to eq(200)
500
+ end
501
+ end
502
+
503
+ describe '#delete_ai_prompt' do
504
+ it 'when request are valid', :enterprise do
505
+ stub_request(:delete, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts/1")
506
+ result = @crowdin.delete_ai_prompt(1)
507
+ expect(result).to eq(200)
508
+ end
509
+ end
510
+
511
+ describe '#get_ai_prompt' do
512
+ it 'when request are valid', :enterprise do
513
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts/1")
514
+ result = @crowdin.get_ai_prompt(1)
515
+ expect(result).to eq(200)
516
+ end
517
+ end
518
+
519
+ describe '#edit_ai_prompt' do
520
+ it 'when request are valid', :enterprise do
521
+ stub_request(:patch, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts/1")
522
+ result = @crowdin.edit_ai_prompt(1, [])
523
+ expect(result).to eq(200)
524
+ end
525
+ end
526
+
527
+ describe '#clone_ai_prompt' do
528
+ it 'when request are valid', :enterprise do
529
+ stub_request(:post, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts/1/clones")
530
+ result = @crowdin.clone_ai_prompt(1, {})
531
+ expect(result).to eq(200)
532
+ end
533
+ end
534
+
535
+ describe '#generate_ai_prompt_completion' do
536
+ it 'when request are valid', :enterprise do
537
+ stub_request(:post, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts/1/completions")
538
+ result = @crowdin.generate_ai_prompt_completion(1, {})
539
+ expect(result).to eq(200)
540
+ end
541
+ end
542
+
543
+ describe '#cancel_ai_prompt_completion' do
544
+ it 'when request are valid', :enterprise do
545
+ stub_request(:delete, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts/1/completions/1")
546
+ result = @crowdin.cancel_ai_prompt_completion(1, 1)
547
+ expect(result).to eq(200)
548
+ end
549
+ end
550
+
551
+ describe '#get_ai_prompt_completion_status' do
552
+ it 'when request are valid', :enterprise do
553
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts/1/completions/1")
554
+ result = @crowdin.get_ai_prompt_completion_status(1, 1)
555
+ expect(result).to eq(200)
556
+ end
557
+ end
558
+
559
+ describe '#download_ai_prompt_completion' do
560
+ it 'when request are valid', :enterprise do
561
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts/1/completions/1/download")
562
+ result = @crowdin.download_ai_prompt_completion(1, 1, nil)
563
+ expect(result).to eq(200)
564
+ end
565
+ end
566
+
567
+ describe '#generate_ai_prompt_fine_tuning_dataset' do
568
+ it 'when request are valid', :enterprise do
569
+ stub_request(:post, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts/1/fine-tuning/datasets")
570
+ result = @crowdin.generate_ai_prompt_fine_tuning_dataset(1, {})
571
+ expect(result).to eq(200)
572
+ end
573
+ end
574
+
575
+ describe '#get_ai_prompt_fine_tuning_dataset_generation_status' do
576
+ it 'when request are valid', :enterprise do
577
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts/1/fine-tuning/datasets/1")
578
+ result = @crowdin.get_ai_prompt_fine_tuning_dataset_generation_status(1, 1)
579
+ expect(result).to eq(200)
580
+ end
581
+ end
582
+
583
+ describe '#download_ai_prompt_fine_tuning_dataset' do
584
+ it 'when request are valid', :enterprise do
585
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts/1/fine-tuning/datasets/1/download")
586
+ result = @crowdin.download_ai_prompt_fine_tuning_dataset(1, 1, nil)
587
+ expect(result).to eq(200)
588
+ end
589
+ end
590
+
591
+ describe '#create_ai_prompt_fine_tuning_job' do
592
+ it 'when request are valid', :enterprise do
593
+ stub_request(:post, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts/1/fine-tuning/jobs")
594
+ result = @crowdin.create_ai_prompt_fine_tuning_job(1, {})
595
+ expect(result).to eq(200)
596
+ end
597
+ end
598
+
599
+ describe '#get_ai_prompt_fine_tuning_job_status' do
600
+ it 'when request are valid', :enterprise do
601
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts/1/fine-tuning/jobs/1")
602
+ result = @crowdin.get_ai_prompt_fine_tuning_job_status(1, 1)
603
+ expect(result).to eq(200)
604
+ end
605
+ end
606
+
607
+ describe '#list_ai_prompt_fine_tuning_events' do
608
+ it 'when request are valid', :enterprise do
609
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/prompts/1/fine-tuning/jobs/1/events")
610
+ result = @crowdin.list_ai_prompt_fine_tuning_events(1, 1)
611
+ expect(result).to eq(200)
612
+ end
613
+ end
614
+
615
+ describe '#list_ai_providers' do
616
+ it 'when request are valid', :enterprise do
617
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/providers")
618
+ result = @crowdin.list_ai_providers({})
619
+ expect(result).to eq(200)
620
+ end
621
+ end
622
+
623
+ describe '#add_ai_provider' do
624
+ it 'when request are valid', :enterprise do
625
+ stub_request(:post, "https://domain.api.crowdin.com/#{target_api_url}/ai/providers")
626
+ result = @crowdin.add_ai_provider({})
627
+ expect(result).to eq(200)
628
+ end
629
+ end
630
+
631
+ describe '#list_all_ai_provider_models' do
632
+ it 'when request are valid', :enterprise do
633
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/providers/models")
634
+ result = @crowdin.list_all_ai_provider_models
635
+ expect(result).to eq(200)
636
+ end
637
+ end
638
+
639
+ describe '#list_supported_ai_provider_models' do
640
+ it 'when request are valid', :enterprise do
641
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/providers/supported-models")
642
+ result = @crowdin.list_supported_ai_provider_models({})
643
+ expect(result).to eq(200)
644
+ end
645
+ end
646
+
647
+ describe '#delete_ai_provider' do
648
+ it 'when request are valid', :enterprise do
649
+ stub_request(:delete, "https://domain.api.crowdin.com/#{target_api_url}/ai/providers/1")
650
+ result = @crowdin.delete_ai_provider(1)
651
+ expect(result).to eq(200)
652
+ end
653
+ end
654
+
655
+ describe '#get_ai_provider' do
656
+ it 'when request are valid', :enterprise do
657
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/providers/1")
658
+ result = @crowdin.get_ai_provider(1)
659
+ expect(result).to eq(200)
660
+ end
661
+ end
662
+
663
+ describe '#edit_ai_provider' do
664
+ it 'when request are valid', :enterprise do
665
+ stub_request(:patch, "https://domain.api.crowdin.com/#{target_api_url}/ai/providers/1")
666
+ result = @crowdin.edit_ai_provider(1, [])
667
+ expect(result).to eq(200)
668
+ end
669
+ end
670
+
671
+ describe '#create_ai_proxy_chat_completion' do
672
+ it 'when request are valid', :enterprise do
673
+ stub_request(:post, "https://domain.api.crowdin.com/#{target_api_url}/ai/providers/1/chat/completions")
674
+ result = @crowdin.create_ai_proxy_chat_completion(1, {})
675
+ expect(result).to eq(200)
676
+ end
677
+ end
678
+
679
+ describe '#ai_gateway_delete' do
680
+ it 'when request are valid', :enterprise do
681
+ stub_request(:delete, "https://domain.api.crowdin.com/#{target_api_url}/ai/providers/1/gateway/1")
682
+ result = @crowdin.ai_gateway_delete(1, 1)
683
+ expect(result).to eq(200)
684
+ end
685
+ end
686
+
687
+ describe '#ai_gateway_get' do
688
+ it 'when request are valid', :enterprise do
689
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/providers/1/gateway/1")
690
+ result = @crowdin.ai_gateway_get(1, 1)
691
+ expect(result).to eq(200)
692
+ end
693
+ end
694
+
695
+ describe '#ai_gateway_patch' do
696
+ it 'when request are valid', :enterprise do
697
+ stub_request(:patch, "https://domain.api.crowdin.com/#{target_api_url}/ai/providers/1/gateway/1")
698
+ result = @crowdin.ai_gateway_patch(1, 1, {})
699
+ expect(result).to eq(200)
700
+ end
701
+ end
702
+
703
+ describe '#ai_gateway_post' do
704
+ it 'when request are valid', :enterprise do
705
+ stub_request(:post, "https://domain.api.crowdin.com/#{target_api_url}/ai/providers/1/gateway/1")
706
+ result = @crowdin.ai_gateway_post(1, 1, {})
707
+ expect(result).to eq(200)
708
+ end
709
+ end
710
+
711
+ describe '#ai_gateway_put' do
712
+ it 'when request are valid', :enterprise do
713
+ stub_request(:put, "https://domain.api.crowdin.com/#{target_api_url}/ai/providers/1/gateway/1")
714
+ result = @crowdin.ai_gateway_put(1, 1, {})
715
+ expect(result).to eq(200)
716
+ end
717
+ end
718
+
719
+ describe '#list_ai_provider_models' do
720
+ it 'when request are valid', :enterprise do
721
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/providers/1/models")
722
+ result = @crowdin.list_ai_provider_models(1)
723
+ expect(result).to eq(200)
724
+ end
725
+ end
726
+
727
+ describe '#generate_ai_report' do
728
+ it 'when request are valid', :enterprise do
729
+ stub_request(:post, "https://domain.api.crowdin.com/#{target_api_url}/ai/reports")
730
+ result = @crowdin.generate_ai_report({})
731
+ expect(result).to eq(200)
732
+ end
733
+ end
734
+
735
+ describe '#check_ai_report_generation_status' do
736
+ it 'when request are valid', :enterprise do
737
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/reports/1")
738
+ result = @crowdin.check_ai_report_generation_status(1)
739
+ expect(result).to eq(200)
740
+ end
741
+ end
742
+
743
+ describe '#download_ai_report' do
744
+ it 'when request are valid', :enterprise do
745
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/reports/1/download")
746
+ result = @crowdin.download_ai_report(1, nil)
747
+ expect(result).to eq(200)
748
+ end
749
+ end
750
+
751
+ describe '#list_ai_request_logs' do
752
+ it 'when request are valid', :enterprise do
753
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/request-logs")
754
+ result = @crowdin.list_ai_request_logs({})
755
+ expect(result).to eq(200)
756
+ end
757
+ end
758
+
759
+ describe '#export_ai_request_logs' do
760
+ it 'when request are valid', :enterprise do
761
+ stub_request(:post, "https://domain.api.crowdin.com/#{target_api_url}/ai/request-logs/exports")
762
+ result = @crowdin.export_ai_request_logs({})
763
+ expect(result).to eq(200)
764
+ end
765
+ end
766
+
767
+ describe '#check_ai_request_logs_export_status' do
768
+ it 'when request are valid', :enterprise do
769
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/request-logs/exports/1")
770
+ result = @crowdin.check_ai_request_logs_export_status(1)
771
+ expect(result).to eq(200)
772
+ end
773
+ end
774
+
775
+ describe '#download_ai_request_logs_export' do
776
+ it 'when request are valid', :enterprise do
777
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/request-logs/exports/1/download")
778
+ result = @crowdin.download_ai_request_logs_export(1, nil)
779
+ expect(result).to eq(200)
780
+ end
781
+ end
782
+
783
+ describe '#get_ai_settings' do
784
+ it 'when request are valid', :enterprise do
785
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/settings")
786
+ result = @crowdin.get_ai_settings
787
+ expect(result).to eq(200)
788
+ end
789
+ end
790
+
791
+ describe '#edit_ai_settings' do
792
+ it 'when request are valid', :enterprise do
793
+ stub_request(:patch, "https://domain.api.crowdin.com/#{target_api_url}/ai/settings")
794
+ result = @crowdin.edit_ai_settings([])
795
+ expect(result).to eq(200)
796
+ end
797
+ end
798
+
799
+ describe '#list_ai_snippets' do
800
+ it 'when request are valid', :enterprise do
801
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/settings/snippets")
802
+ result = @crowdin.list_ai_snippets({})
803
+ expect(result).to eq(200)
804
+ end
805
+ end
806
+
807
+ describe '#add_ai_snippet' do
808
+ it 'when request are valid', :enterprise do
809
+ stub_request(:post, "https://domain.api.crowdin.com/#{target_api_url}/ai/settings/snippets")
810
+ result = @crowdin.add_ai_snippet({})
811
+ expect(result).to eq(200)
812
+ end
813
+ end
814
+
815
+ describe '#delete_ai_snippet' do
816
+ it 'when request are valid', :enterprise do
817
+ stub_request(:delete, "https://domain.api.crowdin.com/#{target_api_url}/ai/settings/snippets/1")
818
+ result = @crowdin.delete_ai_snippet(1)
819
+ expect(result).to eq(200)
820
+ end
821
+ end
822
+
823
+ describe '#get_ai_snippet' do
824
+ it 'when request are valid', :enterprise do
825
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/settings/snippets/1")
826
+ result = @crowdin.get_ai_snippet(1)
827
+ expect(result).to eq(200)
828
+ end
829
+ end
830
+
831
+ describe '#edit_ai_snippet' do
832
+ it 'when request are valid', :enterprise do
833
+ stub_request(:patch, "https://domain.api.crowdin.com/#{target_api_url}/ai/settings/snippets/1")
834
+ result = @crowdin.edit_ai_snippet(1, [])
835
+ expect(result).to eq(200)
836
+ end
837
+ end
838
+
839
+ describe '#ai_translate_strings' do
840
+ it 'when request are valid', :enterprise do
841
+ stub_request(:post, "https://domain.api.crowdin.com/#{target_api_url}/ai/translate")
842
+ result = @crowdin.ai_translate_strings({})
843
+ expect(result).to eq(200)
844
+ end
845
+ end
846
+
847
+ describe '#list_ai_usage_members' do
848
+ it 'when request are valid', :enterprise do
849
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/usage/members")
850
+ result = @crowdin.list_ai_usage_members({})
851
+ expect(result).to eq(200)
852
+ end
853
+ end
854
+
855
+ describe '#get_ai_usage_member' do
856
+ it 'when request are valid', :enterprise do
857
+ stub_request(:get, "https://domain.api.crowdin.com/#{target_api_url}/ai/usage/members/1")
858
+ result = @crowdin.get_ai_usage_member(1)
859
+ expect(result).to eq(200)
860
+ end
861
+ end
862
+ end
863
+ end