deepl-rb 3.6.1 → 3.7.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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/.gitlab-ci.yml +5 -0
  3. data/CHANGELOG.md +19 -1
  4. data/README.md +153 -22
  5. data/Rakefile +2 -0
  6. data/VERSION +1 -1
  7. data/deepl-rb.gemspec +31 -4
  8. data/lib/deepl/requests/base.rb +16 -0
  9. data/lib/deepl/requests/document/upload.rb +6 -5
  10. data/lib/deepl/requests/style_rule/create.rb +46 -0
  11. data/lib/deepl/requests/style_rule/create_custom_instruction.rb +45 -0
  12. data/lib/deepl/requests/style_rule/destroy.rb +39 -0
  13. data/lib/deepl/requests/style_rule/destroy_custom_instruction.rb +40 -0
  14. data/lib/deepl/requests/style_rule/find.rb +40 -0
  15. data/lib/deepl/requests/style_rule/find_custom_instruction.rb +41 -0
  16. data/lib/deepl/requests/style_rule/update.rb +42 -0
  17. data/lib/deepl/requests/style_rule/update_configured_rules.rb +41 -0
  18. data/lib/deepl/requests/style_rule/update_custom_instruction.rb +47 -0
  19. data/lib/deepl/requests/translate.rb +15 -2
  20. data/lib/deepl/requests/translation_memory/list.rb +58 -0
  21. data/lib/deepl/resources/style_rule.rb +2 -1
  22. data/lib/deepl/resources/translation_memory.rb +25 -0
  23. data/lib/deepl/style_rule_api.rb +44 -0
  24. data/lib/deepl/translation_memory_api.rb +17 -0
  25. data/lib/deepl.rb +68 -51
  26. data/lib/version.rb +1 -1
  27. data/spec/fixtures/vcr_cassettes/style_rules_crud.yml +926 -0
  28. data/spec/fixtures/vcr_cassettes/translate_texts.yml +1 -1
  29. data/spec/fixtures/vcr_cassettes/translation_memories.yml +74 -0
  30. data/spec/integration_tests/style_rule_api_spec.rb +56 -0
  31. data/spec/integration_tests/translation_memory_api_spec.rb +70 -0
  32. data/spec/requests/style_rule/create_custom_instruction_spec.rb +54 -0
  33. data/spec/requests/style_rule/create_spec.rb +45 -0
  34. data/spec/requests/style_rule/destroy_custom_instruction_spec.rb +54 -0
  35. data/spec/requests/style_rule/destroy_spec.rb +54 -0
  36. data/spec/requests/style_rule/find_custom_instruction_spec.rb +56 -0
  37. data/spec/requests/style_rule/find_spec.rb +56 -0
  38. data/spec/requests/style_rule/list_spec.rb +58 -0
  39. data/spec/requests/style_rule/update_configured_rules_spec.rb +52 -0
  40. data/spec/requests/style_rule/update_custom_instruction_spec.rb +58 -0
  41. data/spec/requests/style_rule/update_spec.rb +48 -0
  42. data/spec/requests/translate_spec.rb +1 -2
  43. data/spec/requests/translation_memory/list_spec.rb +61 -0
  44. data/spec/resources/translation_memory_spec.rb +35 -0
  45. metadata +30 -3
@@ -0,0 +1,926 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.deepl.com/v3/style_rules
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"name":"Instruction Test","language":"en"}'
9
+ headers:
10
+ Authorization:
11
+ - DeepL-Auth-Key VALID_TOKEN
12
+ User-Agent:
13
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
14
+ Content-Type:
15
+ - application/json
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ Accept:
19
+ - "*/*"
20
+ response:
21
+ status:
22
+ code: 201
23
+ message: Created
24
+ headers:
25
+ Content-Type:
26
+ - application/json; charset=utf-8
27
+ Date:
28
+ - Tue, 21 Apr 2026 17:51:48 GMT
29
+ X-Trace-Id:
30
+ - ae0b8f4320414c8e8308340eca39b9b5
31
+ Access-Control-Expose-Headers:
32
+ - Server-Timing, X-Trace-ID
33
+ Server-Timing:
34
+ - l7_lb_tls;dur=190, l7_lb_idle;dur=1, l7_lb_receive;dur=0, l7_lb_total;dur=823
35
+ Strict-Transport-Security:
36
+ - max-age=63072000; includeSubDomains; preload
37
+ Transfer-Encoding:
38
+ - chunked
39
+ Vary:
40
+ - Accept-Encoding
41
+ body:
42
+ encoding: ASCII-8BIT
43
+ string: '{"style_id":"a8f08169-8d30-47f4-a06a-3a7d93100622","name":"Instruction
44
+ Test","creation_time":"2026-04-21T17:51:48.60032Z","updated_time":"2026-04-21T17:51:48.600543Z","language":"en","version":1,"custom_instructions":[],"configured_rules":{}}'
45
+ recorded_at: Tue, 21 Apr 2026 17:51:48 GMT
46
+ - request:
47
+ method: post
48
+ uri: https://api.deepl.com/v3/style_rules/a8f08169-8d30-47f4-a06a-3a7d93100622/custom_instructions
49
+ body:
50
+ encoding: UTF-8
51
+ string: '{"label":"Test Instruction","prompt":"Always use formal language"}'
52
+ headers:
53
+ Authorization:
54
+ - DeepL-Auth-Key VALID_TOKEN
55
+ User-Agent:
56
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
57
+ Content-Type:
58
+ - application/json
59
+ Accept-Encoding:
60
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
61
+ Accept:
62
+ - "*/*"
63
+ response:
64
+ status:
65
+ code: 201
66
+ message: Created
67
+ headers:
68
+ Content-Type:
69
+ - application/json; charset=utf-8
70
+ Date:
71
+ - Tue, 21 Apr 2026 17:51:48 GMT
72
+ X-Trace-Id:
73
+ - 8a07a54af0084c5ea8099c4a0b758e35
74
+ Access-Control-Expose-Headers:
75
+ - Server-Timing, X-Trace-ID
76
+ Server-Timing:
77
+ - l7_lb_tls;dur=188, l7_lb_idle;dur=1, l7_lb_receive;dur=0, l7_lb_total;dur=206
78
+ Strict-Transport-Security:
79
+ - max-age=63072000; includeSubDomains; preload
80
+ Transfer-Encoding:
81
+ - chunked
82
+ Vary:
83
+ - Accept-Encoding
84
+ body:
85
+ encoding: ASCII-8BIT
86
+ string: '{"id":"f35db85e-a3f7-4d84-bdc2-af9288cfffe5","label":"Test Instruction","prompt":"Always
87
+ use formal language"}'
88
+ recorded_at: Tue, 21 Apr 2026 17:51:49 GMT
89
+ - request:
90
+ method: post
91
+ uri: https://api.deepl.com/v3/style_rules
92
+ body:
93
+ encoding: UTF-8
94
+ string: '{"name":"Test Style Rule","language":"en"}'
95
+ headers:
96
+ Authorization:
97
+ - DeepL-Auth-Key VALID_TOKEN
98
+ User-Agent:
99
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
100
+ Content-Type:
101
+ - application/json
102
+ Accept-Encoding:
103
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
104
+ Accept:
105
+ - "*/*"
106
+ response:
107
+ status:
108
+ code: 201
109
+ message: Created
110
+ headers:
111
+ Content-Type:
112
+ - application/json; charset=utf-8
113
+ Date:
114
+ - Tue, 21 Apr 2026 17:51:50 GMT
115
+ X-Trace-Id:
116
+ - da221a0be9604d7fa5a3e9a955bdb927
117
+ Access-Control-Expose-Headers:
118
+ - Server-Timing, X-Trace-ID
119
+ Server-Timing:
120
+ - l7_lb_tls;dur=188, l7_lb_idle;dur=1, l7_lb_receive;dur=0, l7_lb_total;dur=774
121
+ Strict-Transport-Security:
122
+ - max-age=63072000; includeSubDomains; preload
123
+ Transfer-Encoding:
124
+ - chunked
125
+ Vary:
126
+ - Accept-Encoding
127
+ body:
128
+ encoding: ASCII-8BIT
129
+ string: '{"style_id":"85375882-5395-4a60-908d-05f2ca959905","name":"Test Style
130
+ Rule","creation_time":"2026-04-21T17:51:50.346052Z","updated_time":"2026-04-21T17:51:50.346291Z","language":"en","version":1,"custom_instructions":[],"configured_rules":{}}'
131
+ recorded_at: Tue, 21 Apr 2026 17:51:50 GMT
132
+ - request:
133
+ method: post
134
+ uri: https://api.deepl.com/v3/style_rules
135
+ body:
136
+ encoding: UTF-8
137
+ string: '{"name":"Destroy Instruction Test","language":"en"}'
138
+ headers:
139
+ Authorization:
140
+ - DeepL-Auth-Key VALID_TOKEN
141
+ User-Agent:
142
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
143
+ Content-Type:
144
+ - application/json
145
+ Accept-Encoding:
146
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
147
+ Accept:
148
+ - "*/*"
149
+ response:
150
+ status:
151
+ code: 201
152
+ message: Created
153
+ headers:
154
+ Content-Type:
155
+ - application/json; charset=utf-8
156
+ Date:
157
+ - Tue, 21 Apr 2026 17:51:50 GMT
158
+ X-Trace-Id:
159
+ - 3fd5be83412542fc83ebc579e1c23734
160
+ Access-Control-Expose-Headers:
161
+ - Server-Timing, X-Trace-ID
162
+ Server-Timing:
163
+ - l7_lb_tls;dur=187, l7_lb_idle;dur=0, l7_lb_receive;dur=0, l7_lb_total;dur=739
164
+ Strict-Transport-Security:
165
+ - max-age=63072000; includeSubDomains; preload
166
+ Transfer-Encoding:
167
+ - chunked
168
+ Vary:
169
+ - Accept-Encoding
170
+ body:
171
+ encoding: ASCII-8BIT
172
+ string: '{"style_id":"c36516d5-40da-4fe1-ab61-c562dc745fc3","name":"Destroy
173
+ Instruction Test","creation_time":"2026-04-21T17:51:51.468557Z","updated_time":"2026-04-21T17:51:51.468777Z","language":"en","version":1,"custom_instructions":[],"configured_rules":{}}'
174
+ recorded_at: Tue, 21 Apr 2026 17:51:51 GMT
175
+ - request:
176
+ method: post
177
+ uri: https://api.deepl.com/v3/style_rules/c36516d5-40da-4fe1-ab61-c562dc745fc3/custom_instructions
178
+ body:
179
+ encoding: UTF-8
180
+ string: '{"label":"To Delete","prompt":"Delete me"}'
181
+ headers:
182
+ Authorization:
183
+ - DeepL-Auth-Key VALID_TOKEN
184
+ User-Agent:
185
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
186
+ Content-Type:
187
+ - application/json
188
+ Accept-Encoding:
189
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
190
+ Accept:
191
+ - "*/*"
192
+ response:
193
+ status:
194
+ code: 201
195
+ message: Created
196
+ headers:
197
+ Content-Type:
198
+ - application/json; charset=utf-8
199
+ Date:
200
+ - Tue, 21 Apr 2026 17:51:51 GMT
201
+ X-Trace-Id:
202
+ - 3055983f385f44218d577c8e418c36fe
203
+ Access-Control-Expose-Headers:
204
+ - Server-Timing, X-Trace-ID
205
+ Server-Timing:
206
+ - l7_lb_tls;dur=191, l7_lb_idle;dur=1, l7_lb_receive;dur=0, l7_lb_total;dur=209
207
+ Strict-Transport-Security:
208
+ - max-age=63072000; includeSubDomains; preload
209
+ Transfer-Encoding:
210
+ - chunked
211
+ Vary:
212
+ - Accept-Encoding
213
+ body:
214
+ encoding: ASCII-8BIT
215
+ string: '{"id":"ecb6c4ec-7ec8-429d-9d80-455f8b7c1a0a","label":"To Delete","prompt":"Delete
216
+ me"}'
217
+ recorded_at: Tue, 21 Apr 2026 17:51:52 GMT
218
+ - request:
219
+ method: delete
220
+ uri: https://api.deepl.com/v3/style_rules/c36516d5-40da-4fe1-ab61-c562dc745fc3/custom_instructions/ecb6c4ec-7ec8-429d-9d80-455f8b7c1a0a
221
+ body:
222
+ encoding: UTF-8
223
+ string: "{}"
224
+ headers:
225
+ Authorization:
226
+ - DeepL-Auth-Key VALID_TOKEN
227
+ User-Agent:
228
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
229
+ Content-Type:
230
+ - application/json
231
+ Accept-Encoding:
232
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
233
+ Accept:
234
+ - "*/*"
235
+ response:
236
+ status:
237
+ code: 204
238
+ message: No Content
239
+ headers:
240
+ Date:
241
+ - Tue, 21 Apr 2026 17:51:52 GMT
242
+ X-Trace-Id:
243
+ - 5805f9033cce4e02a8fd0479128e6ad9
244
+ Access-Control-Expose-Headers:
245
+ - Server-Timing, X-Trace-ID
246
+ Server-Timing:
247
+ - l7_lb_tls;dur=187, l7_lb_idle;dur=0, l7_lb_receive;dur=0, l7_lb_total;dur=205
248
+ Strict-Transport-Security:
249
+ - max-age=63072000; includeSubDomains; preload
250
+ body:
251
+ encoding: UTF-8
252
+ string: ''
253
+ recorded_at: Tue, 21 Apr 2026 17:51:52 GMT
254
+ - request:
255
+ method: post
256
+ uri: https://api.deepl.com/v3/style_rules
257
+ body:
258
+ encoding: UTF-8
259
+ string: '{"name":"Destroy Test","language":"en"}'
260
+ headers:
261
+ Authorization:
262
+ - DeepL-Auth-Key VALID_TOKEN
263
+ User-Agent:
264
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
265
+ Content-Type:
266
+ - application/json
267
+ Accept-Encoding:
268
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
269
+ Accept:
270
+ - "*/*"
271
+ response:
272
+ status:
273
+ code: 201
274
+ message: Created
275
+ headers:
276
+ Content-Type:
277
+ - application/json; charset=utf-8
278
+ Date:
279
+ - Tue, 21 Apr 2026 17:51:53 GMT
280
+ X-Trace-Id:
281
+ - 3e2fbfbd6f1e4b6a9ac42efbad488f1e
282
+ Access-Control-Expose-Headers:
283
+ - Server-Timing, X-Trace-ID
284
+ Server-Timing:
285
+ - l7_lb_tls;dur=190, l7_lb_idle;dur=1, l7_lb_receive;dur=0, l7_lb_total;dur=816
286
+ Strict-Transport-Security:
287
+ - max-age=63072000; includeSubDomains; preload
288
+ Transfer-Encoding:
289
+ - chunked
290
+ Vary:
291
+ - Accept-Encoding
292
+ body:
293
+ encoding: ASCII-8BIT
294
+ string: '{"style_id":"46a3dca4-657d-4390-b868-90609413d3d6","name":"Destroy
295
+ Test","creation_time":"2026-04-21T17:51:53.837769Z","updated_time":"2026-04-21T17:51:53.838009Z","language":"en","version":1,"custom_instructions":[],"configured_rules":{}}'
296
+ recorded_at: Tue, 21 Apr 2026 17:51:53 GMT
297
+ - request:
298
+ method: delete
299
+ uri: https://api.deepl.com/v3/style_rules/46a3dca4-657d-4390-b868-90609413d3d6
300
+ body:
301
+ encoding: UTF-8
302
+ string: "{}"
303
+ headers:
304
+ Authorization:
305
+ - DeepL-Auth-Key VALID_TOKEN
306
+ User-Agent:
307
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
308
+ Content-Type:
309
+ - application/json
310
+ Accept-Encoding:
311
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
312
+ Accept:
313
+ - "*/*"
314
+ response:
315
+ status:
316
+ code: 204
317
+ message: No Content
318
+ headers:
319
+ Date:
320
+ - Tue, 21 Apr 2026 17:51:54 GMT
321
+ X-Trace-Id:
322
+ - 19dff3dac0574015a916ed9b6aa5e457
323
+ Access-Control-Expose-Headers:
324
+ - Server-Timing, X-Trace-ID
325
+ Server-Timing:
326
+ - l7_lb_tls;dur=189, l7_lb_idle;dur=1, l7_lb_receive;dur=1, l7_lb_total;dur=202
327
+ Strict-Transport-Security:
328
+ - max-age=63072000; includeSubDomains; preload
329
+ body:
330
+ encoding: UTF-8
331
+ string: ''
332
+ recorded_at: Tue, 21 Apr 2026 17:51:54 GMT
333
+ - request:
334
+ method: delete
335
+ uri: https://api.deepl.com/v3/style_rules/invalid-uuid
336
+ body:
337
+ encoding: UTF-8
338
+ string: "{}"
339
+ headers:
340
+ Authorization:
341
+ - DeepL-Auth-Key VALID_TOKEN
342
+ User-Agent:
343
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
344
+ Content-Type:
345
+ - application/json
346
+ Accept-Encoding:
347
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
348
+ Accept:
349
+ - "*/*"
350
+ response:
351
+ status:
352
+ code: 400
353
+ message: Bad Request
354
+ headers:
355
+ Content-Type:
356
+ - application/json; charset=utf-8
357
+ Date:
358
+ - Tue, 21 Apr 2026 17:51:54 GMT
359
+ X-Trace-Id:
360
+ - '085e505956424bb8ad2a33857e9a7805'
361
+ Access-Control-Expose-Headers:
362
+ - Server-Timing, X-Trace-ID
363
+ Server-Timing:
364
+ - l7_lb_tls;dur=189, l7_lb_idle;dur=1, l7_lb_receive;dur=0, l7_lb_total;dur=192
365
+ Strict-Transport-Security:
366
+ - max-age=63072000; includeSubDomains; preload
367
+ Transfer-Encoding:
368
+ - chunked
369
+ body:
370
+ encoding: UTF-8
371
+ string: '{"message":"Bad request. Reason: Invalid or missing style rule id"}'
372
+ recorded_at: Tue, 21 Apr 2026 17:51:55 GMT
373
+ - request:
374
+ method: post
375
+ uri: https://api.deepl.com/v3/style_rules
376
+ body:
377
+ encoding: UTF-8
378
+ string: '{"name":"Find Instruction Test","language":"en"}'
379
+ headers:
380
+ Authorization:
381
+ - DeepL-Auth-Key VALID_TOKEN
382
+ User-Agent:
383
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
384
+ Content-Type:
385
+ - application/json
386
+ Accept-Encoding:
387
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
388
+ Accept:
389
+ - "*/*"
390
+ response:
391
+ status:
392
+ code: 201
393
+ message: Created
394
+ headers:
395
+ Content-Type:
396
+ - application/json; charset=utf-8
397
+ Date:
398
+ - Tue, 21 Apr 2026 17:51:55 GMT
399
+ X-Trace-Id:
400
+ - ab548c13f2854d6c8a8397f9c95008c7
401
+ Access-Control-Expose-Headers:
402
+ - Server-Timing, X-Trace-ID
403
+ Server-Timing:
404
+ - l7_lb_tls;dur=187, l7_lb_idle;dur=1, l7_lb_receive;dur=0, l7_lb_total;dur=796
405
+ Strict-Transport-Security:
406
+ - max-age=63072000; includeSubDomains; preload
407
+ Transfer-Encoding:
408
+ - chunked
409
+ Vary:
410
+ - Accept-Encoding
411
+ body:
412
+ encoding: ASCII-8BIT
413
+ string: '{"style_id":"b494e133-a2d8-4e4a-93b2-9476afb376cf","name":"Find Instruction
414
+ Test","creation_time":"2026-04-21T17:51:56.189654Z","updated_time":"2026-04-21T17:51:56.189806Z","language":"en","version":1,"custom_instructions":[],"configured_rules":{}}'
415
+ recorded_at: Tue, 21 Apr 2026 17:51:56 GMT
416
+ - request:
417
+ method: post
418
+ uri: https://api.deepl.com/v3/style_rules/b494e133-a2d8-4e4a-93b2-9476afb376cf/custom_instructions
419
+ body:
420
+ encoding: UTF-8
421
+ string: '{"label":"Test","prompt":"Test prompt"}'
422
+ headers:
423
+ Authorization:
424
+ - DeepL-Auth-Key VALID_TOKEN
425
+ User-Agent:
426
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
427
+ Content-Type:
428
+ - application/json
429
+ Accept-Encoding:
430
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
431
+ Accept:
432
+ - "*/*"
433
+ response:
434
+ status:
435
+ code: 201
436
+ message: Created
437
+ headers:
438
+ Content-Type:
439
+ - application/json; charset=utf-8
440
+ Date:
441
+ - Tue, 21 Apr 2026 17:51:56 GMT
442
+ X-Trace-Id:
443
+ - 9500242a186f4733be9e0371790469a4
444
+ Access-Control-Expose-Headers:
445
+ - Server-Timing, X-Trace-ID
446
+ Server-Timing:
447
+ - l7_lb_tls;dur=188, l7_lb_idle;dur=2, l7_lb_receive;dur=0, l7_lb_total;dur=205
448
+ Strict-Transport-Security:
449
+ - max-age=63072000; includeSubDomains; preload
450
+ Transfer-Encoding:
451
+ - chunked
452
+ Vary:
453
+ - Accept-Encoding
454
+ body:
455
+ encoding: ASCII-8BIT
456
+ string: '{"id":"a6084fe0-aca9-44bb-a411-09ddc99c05fc","label":"Test","prompt":"Test
457
+ prompt"}'
458
+ recorded_at: Tue, 21 Apr 2026 17:51:56 GMT
459
+ - request:
460
+ method: get
461
+ uri: https://api.deepl.com/v3/style_rules/b494e133-a2d8-4e4a-93b2-9476afb376cf/custom_instructions/a6084fe0-aca9-44bb-a411-09ddc99c05fc
462
+ body:
463
+ encoding: UTF-8
464
+ string: "{}"
465
+ headers:
466
+ Authorization:
467
+ - DeepL-Auth-Key VALID_TOKEN
468
+ User-Agent:
469
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
470
+ Content-Type:
471
+ - application/json
472
+ Accept-Encoding:
473
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
474
+ Accept:
475
+ - "*/*"
476
+ response:
477
+ status:
478
+ code: 200
479
+ message: OK
480
+ headers:
481
+ Content-Type:
482
+ - application/json; charset=utf-8
483
+ Date:
484
+ - Tue, 21 Apr 2026 17:51:57 GMT
485
+ X-Trace-Id:
486
+ - babb480d6e0f4e859406b3eeff4f36b7
487
+ Access-Control-Expose-Headers:
488
+ - Server-Timing, X-Trace-ID
489
+ Server-Timing:
490
+ - l7_lb_tls;dur=189, l7_lb_idle;dur=1, l7_lb_receive;dur=0, l7_lb_total;dur=209
491
+ Strict-Transport-Security:
492
+ - max-age=63072000; includeSubDomains; preload
493
+ Transfer-Encoding:
494
+ - chunked
495
+ Vary:
496
+ - Accept-Encoding
497
+ body:
498
+ encoding: ASCII-8BIT
499
+ string: '{"id":"a6084fe0-aca9-44bb-a411-09ddc99c05fc","label":"Test","prompt":"Test
500
+ prompt"}'
501
+ recorded_at: Tue, 21 Apr 2026 17:51:57 GMT
502
+ - request:
503
+ method: post
504
+ uri: https://api.deepl.com/v3/style_rules
505
+ body:
506
+ encoding: UTF-8
507
+ string: '{"name":"Find Test","language":"en"}'
508
+ headers:
509
+ Authorization:
510
+ - DeepL-Auth-Key VALID_TOKEN
511
+ User-Agent:
512
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
513
+ Content-Type:
514
+ - application/json
515
+ Accept-Encoding:
516
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
517
+ Accept:
518
+ - "*/*"
519
+ response:
520
+ status:
521
+ code: 201
522
+ message: Created
523
+ headers:
524
+ Content-Type:
525
+ - application/json; charset=utf-8
526
+ Date:
527
+ - Tue, 21 Apr 2026 17:51:57 GMT
528
+ X-Trace-Id:
529
+ - 4129dbf675a94aea94bd03110d920113
530
+ Access-Control-Expose-Headers:
531
+ - Server-Timing, X-Trace-ID
532
+ Server-Timing:
533
+ - l7_lb_tls;dur=204, l7_lb_idle;dur=0, l7_lb_receive;dur=0, l7_lb_total;dur=832
534
+ Strict-Transport-Security:
535
+ - max-age=63072000; includeSubDomains; preload
536
+ Transfer-Encoding:
537
+ - chunked
538
+ Vary:
539
+ - Accept-Encoding
540
+ body:
541
+ encoding: ASCII-8BIT
542
+ string: '{"style_id":"e87fb3f0-b938-4632-8932-2c0a7c6ab14c","name":"Find Test","creation_time":"2026-04-21T17:51:58.569257Z","updated_time":"2026-04-21T17:51:58.569561Z","language":"en","version":1,"custom_instructions":[],"configured_rules":{}}'
543
+ recorded_at: Tue, 21 Apr 2026 17:51:58 GMT
544
+ - request:
545
+ method: get
546
+ uri: https://api.deepl.com/v3/style_rules/e87fb3f0-b938-4632-8932-2c0a7c6ab14c
547
+ body:
548
+ encoding: UTF-8
549
+ string: "{}"
550
+ headers:
551
+ Authorization:
552
+ - DeepL-Auth-Key VALID_TOKEN
553
+ User-Agent:
554
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
555
+ Content-Type:
556
+ - application/json
557
+ Accept-Encoding:
558
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
559
+ Accept:
560
+ - "*/*"
561
+ response:
562
+ status:
563
+ code: 200
564
+ message: OK
565
+ headers:
566
+ Content-Type:
567
+ - application/json; charset=utf-8
568
+ Date:
569
+ - Tue, 21 Apr 2026 17:51:58 GMT
570
+ X-Trace-Id:
571
+ - 4ea86366185a41cfa4b6bc001eb26cca
572
+ Access-Control-Expose-Headers:
573
+ - Server-Timing, X-Trace-ID
574
+ Server-Timing:
575
+ - l7_lb_tls;dur=186, l7_lb_idle;dur=1, l7_lb_receive;dur=0, l7_lb_total;dur=195
576
+ Strict-Transport-Security:
577
+ - max-age=63072000; includeSubDomains; preload
578
+ Transfer-Encoding:
579
+ - chunked
580
+ Vary:
581
+ - Accept-Encoding
582
+ body:
583
+ encoding: ASCII-8BIT
584
+ string: '{"style_id":"e87fb3f0-b938-4632-8932-2c0a7c6ab14c","name":"Find Test","creation_time":"2026-04-21T17:51:58.569257Z","updated_time":"2026-04-21T17:51:58.569561Z","language":"en","version":1,"custom_instructions":[],"configured_rules":{}}'
585
+ recorded_at: Tue, 21 Apr 2026 17:51:59 GMT
586
+ - request:
587
+ method: get
588
+ uri: https://api.deepl.com/v3/style_rules/invalid-uuid
589
+ body:
590
+ encoding: UTF-8
591
+ string: "{}"
592
+ headers:
593
+ Authorization:
594
+ - DeepL-Auth-Key VALID_TOKEN
595
+ User-Agent:
596
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
597
+ Content-Type:
598
+ - application/json
599
+ Accept-Encoding:
600
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
601
+ Accept:
602
+ - "*/*"
603
+ response:
604
+ status:
605
+ code: 400
606
+ message: Bad Request
607
+ headers:
608
+ Content-Type:
609
+ - application/json; charset=utf-8
610
+ Date:
611
+ - Tue, 21 Apr 2026 17:51:58 GMT
612
+ X-Trace-Id:
613
+ - 97cbaaafc66948dfa91292af99d9b48e
614
+ Access-Control-Expose-Headers:
615
+ - Server-Timing, X-Trace-ID
616
+ Server-Timing:
617
+ - l7_lb_tls;dur=187, l7_lb_idle;dur=0, l7_lb_receive;dur=0, l7_lb_total;dur=192
618
+ Strict-Transport-Security:
619
+ - max-age=63072000; includeSubDomains; preload
620
+ Transfer-Encoding:
621
+ - chunked
622
+ body:
623
+ encoding: UTF-8
624
+ string: '{"message":"Bad request. Reason: Invalid or missing style rule id"}'
625
+ recorded_at: Tue, 21 Apr 2026 17:51:59 GMT
626
+ - request:
627
+ method: post
628
+ uri: https://api.deepl.com/v3/style_rules
629
+ body:
630
+ encoding: UTF-8
631
+ string: '{"name":"Configured Rules Test","language":"en"}'
632
+ headers:
633
+ Authorization:
634
+ - DeepL-Auth-Key VALID_TOKEN
635
+ User-Agent:
636
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
637
+ Content-Type:
638
+ - application/json
639
+ Accept-Encoding:
640
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
641
+ Accept:
642
+ - "*/*"
643
+ response:
644
+ status:
645
+ code: 201
646
+ message: Created
647
+ headers:
648
+ Content-Type:
649
+ - application/json; charset=utf-8
650
+ Date:
651
+ - Tue, 21 Apr 2026 17:52:00 GMT
652
+ X-Trace-Id:
653
+ - 264419006ddb4e2cae1e260523435a0d
654
+ Access-Control-Expose-Headers:
655
+ - Server-Timing, X-Trace-ID
656
+ Server-Timing:
657
+ - l7_lb_tls;dur=186, l7_lb_idle;dur=1, l7_lb_receive;dur=0, l7_lb_total;dur=781
658
+ Strict-Transport-Security:
659
+ - max-age=63072000; includeSubDomains; preload
660
+ Transfer-Encoding:
661
+ - chunked
662
+ Vary:
663
+ - Accept-Encoding
664
+ body:
665
+ encoding: ASCII-8BIT
666
+ string: '{"style_id":"8d80ddd1-e6e6-40ab-b2bc-7b2574f256e5","name":"Configured
667
+ Rules Test","creation_time":"2026-04-21T17:52:00.91128Z","updated_time":"2026-04-21T17:52:00.911555Z","language":"en","version":1,"custom_instructions":[],"configured_rules":{}}'
668
+ recorded_at: Tue, 21 Apr 2026 17:52:01 GMT
669
+ - request:
670
+ method: put
671
+ uri: https://api.deepl.com/v3/style_rules/8d80ddd1-e6e6-40ab-b2bc-7b2574f256e5/configured_rules
672
+ body:
673
+ encoding: UTF-8
674
+ string: '{"dates_and_times":{"calendar_era":"use_bc_and_ad"}}'
675
+ headers:
676
+ Authorization:
677
+ - DeepL-Auth-Key VALID_TOKEN
678
+ User-Agent:
679
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
680
+ Content-Type:
681
+ - application/json
682
+ Accept-Encoding:
683
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
684
+ Accept:
685
+ - "*/*"
686
+ response:
687
+ status:
688
+ code: 200
689
+ message: OK
690
+ headers:
691
+ Content-Type:
692
+ - application/json; charset=utf-8
693
+ Date:
694
+ - Tue, 21 Apr 2026 17:52:00 GMT
695
+ X-Trace-Id:
696
+ - ec830f7057eb4038b44df018e31e1709
697
+ Access-Control-Expose-Headers:
698
+ - Server-Timing, X-Trace-ID
699
+ Server-Timing:
700
+ - l7_lb_tls;dur=189, l7_lb_idle;dur=1, l7_lb_receive;dur=0, l7_lb_total;dur=216
701
+ Strict-Transport-Security:
702
+ - max-age=63072000; includeSubDomains; preload
703
+ Transfer-Encoding:
704
+ - chunked
705
+ Vary:
706
+ - Accept-Encoding
707
+ body:
708
+ encoding: ASCII-8BIT
709
+ string: '{"style_id":"8d80ddd1-e6e6-40ab-b2bc-7b2574f256e5","name":"Configured
710
+ Rules Test","creation_time":"2026-04-21T17:52:00.91128Z","updated_time":"2026-04-21T17:52:01.5156185Z","language":"en","version":2,"custom_instructions":[],"configured_rules":{"dates_and_times":{"calendar_era":"use_bc_and_ad"}}}'
711
+ recorded_at: Tue, 21 Apr 2026 17:52:01 GMT
712
+ - request:
713
+ method: post
714
+ uri: https://api.deepl.com/v3/style_rules
715
+ body:
716
+ encoding: UTF-8
717
+ string: '{"name":"Update Instruction Test","language":"en"}'
718
+ headers:
719
+ Authorization:
720
+ - DeepL-Auth-Key VALID_TOKEN
721
+ User-Agent:
722
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
723
+ Content-Type:
724
+ - application/json
725
+ Accept-Encoding:
726
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
727
+ Accept:
728
+ - "*/*"
729
+ response:
730
+ status:
731
+ code: 201
732
+ message: Created
733
+ headers:
734
+ Content-Type:
735
+ - application/json; charset=utf-8
736
+ Date:
737
+ - Tue, 21 Apr 2026 17:52:02 GMT
738
+ X-Trace-Id:
739
+ - 68a63d3d4fde4a5bb5b2d22f91ea003d
740
+ Access-Control-Expose-Headers:
741
+ - Server-Timing, X-Trace-ID
742
+ Server-Timing:
743
+ - l7_lb_tls;dur=189, l7_lb_idle;dur=2, l7_lb_receive;dur=0, l7_lb_total;dur=602
744
+ Strict-Transport-Security:
745
+ - max-age=63072000; includeSubDomains; preload
746
+ Transfer-Encoding:
747
+ - chunked
748
+ Vary:
749
+ - Accept-Encoding
750
+ body:
751
+ encoding: ASCII-8BIT
752
+ string: '{"style_id":"dcd98ff9-3053-4ab9-bc97-1b525ae6d474","name":"Update Instruction
753
+ Test","creation_time":"2026-04-21T17:52:02.507758Z","updated_time":"2026-04-21T17:52:02.507958Z","language":"en","version":1,"custom_instructions":[],"configured_rules":{}}'
754
+ recorded_at: Tue, 21 Apr 2026 17:52:02 GMT
755
+ - request:
756
+ method: post
757
+ uri: https://api.deepl.com/v3/style_rules/dcd98ff9-3053-4ab9-bc97-1b525ae6d474/custom_instructions
758
+ body:
759
+ encoding: UTF-8
760
+ string: '{"label":"Original","prompt":"Original prompt"}'
761
+ headers:
762
+ Authorization:
763
+ - DeepL-Auth-Key VALID_TOKEN
764
+ User-Agent:
765
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
766
+ Content-Type:
767
+ - application/json
768
+ Accept-Encoding:
769
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
770
+ Accept:
771
+ - "*/*"
772
+ response:
773
+ status:
774
+ code: 201
775
+ message: Created
776
+ headers:
777
+ Content-Type:
778
+ - application/json; charset=utf-8
779
+ Date:
780
+ - Tue, 21 Apr 2026 17:52:02 GMT
781
+ X-Trace-Id:
782
+ - 3f9f2ed58f244d95ad05e0547c2db566
783
+ Access-Control-Expose-Headers:
784
+ - Server-Timing, X-Trace-ID
785
+ Server-Timing:
786
+ - l7_lb_tls;dur=189, l7_lb_idle;dur=1, l7_lb_receive;dur=0, l7_lb_total;dur=206
787
+ Strict-Transport-Security:
788
+ - max-age=63072000; includeSubDomains; preload
789
+ Transfer-Encoding:
790
+ - chunked
791
+ Vary:
792
+ - Accept-Encoding
793
+ body:
794
+ encoding: ASCII-8BIT
795
+ string: '{"id":"8f0d68e3-8544-4480-83c0-9eff49b3e1af","label":"Original","prompt":"Original
796
+ prompt"}'
797
+ recorded_at: Tue, 21 Apr 2026 17:52:03 GMT
798
+ - request:
799
+ method: put
800
+ uri: https://api.deepl.com/v3/style_rules/dcd98ff9-3053-4ab9-bc97-1b525ae6d474/custom_instructions/8f0d68e3-8544-4480-83c0-9eff49b3e1af
801
+ body:
802
+ encoding: UTF-8
803
+ string: '{"label":"Updated Label","prompt":"Use casual language"}'
804
+ headers:
805
+ Authorization:
806
+ - DeepL-Auth-Key VALID_TOKEN
807
+ User-Agent:
808
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
809
+ Content-Type:
810
+ - application/json
811
+ Accept-Encoding:
812
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
813
+ Accept:
814
+ - "*/*"
815
+ response:
816
+ status:
817
+ code: 200
818
+ message: OK
819
+ headers:
820
+ Content-Type:
821
+ - application/json; charset=utf-8
822
+ Date:
823
+ - Tue, 21 Apr 2026 17:52:03 GMT
824
+ X-Trace-Id:
825
+ - 0ffe73d1f5974f319d325fb101b40a77
826
+ Access-Control-Expose-Headers:
827
+ - Server-Timing, X-Trace-ID
828
+ Server-Timing:
829
+ - l7_lb_tls;dur=191, l7_lb_idle;dur=1, l7_lb_receive;dur=1, l7_lb_total;dur=210
830
+ Strict-Transport-Security:
831
+ - max-age=63072000; includeSubDomains; preload
832
+ Transfer-Encoding:
833
+ - chunked
834
+ Vary:
835
+ - Accept-Encoding
836
+ body:
837
+ encoding: ASCII-8BIT
838
+ string: '{"id":"8f0d68e3-8544-4480-83c0-9eff49b3e1af","label":"Updated Label","prompt":"Use
839
+ casual language"}'
840
+ recorded_at: Tue, 21 Apr 2026 17:52:03 GMT
841
+ - request:
842
+ method: post
843
+ uri: https://api.deepl.com/v3/style_rules
844
+ body:
845
+ encoding: UTF-8
846
+ string: '{"name":"Update Test","language":"en"}'
847
+ headers:
848
+ Authorization:
849
+ - DeepL-Auth-Key VALID_TOKEN
850
+ User-Agent:
851
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
852
+ Content-Type:
853
+ - application/json
854
+ Accept-Encoding:
855
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
856
+ Accept:
857
+ - "*/*"
858
+ response:
859
+ status:
860
+ code: 201
861
+ message: Created
862
+ headers:
863
+ Content-Type:
864
+ - application/json; charset=utf-8
865
+ Date:
866
+ - Tue, 21 Apr 2026 17:52:04 GMT
867
+ X-Trace-Id:
868
+ - e36d24e12c264fff8c46616f0327be60
869
+ Access-Control-Expose-Headers:
870
+ - Server-Timing, X-Trace-ID
871
+ Server-Timing:
872
+ - l7_lb_tls;dur=187, l7_lb_idle;dur=1, l7_lb_receive;dur=0, l7_lb_total;dur=647
873
+ Strict-Transport-Security:
874
+ - max-age=63072000; includeSubDomains; preload
875
+ Transfer-Encoding:
876
+ - chunked
877
+ Vary:
878
+ - Accept-Encoding
879
+ body:
880
+ encoding: ASCII-8BIT
881
+ string: '{"style_id":"0f49066c-7382-4a1b-922c-62a35ea7fce9","name":"Update Test","creation_time":"2026-04-21T17:52:04.728681Z","updated_time":"2026-04-21T17:52:04.728907Z","language":"en","version":1,"custom_instructions":[],"configured_rules":{}}'
882
+ recorded_at: Tue, 21 Apr 2026 17:52:04 GMT
883
+ - request:
884
+ method: patch
885
+ uri: https://api.deepl.com/v3/style_rules/0f49066c-7382-4a1b-922c-62a35ea7fce9
886
+ body:
887
+ encoding: UTF-8
888
+ string: '{"name":"Updated Name"}'
889
+ headers:
890
+ Authorization:
891
+ - DeepL-Auth-Key VALID_TOKEN
892
+ User-Agent:
893
+ - deepl-ruby/3.6.1 (darwin24) ruby/3.2.2
894
+ Content-Type:
895
+ - application/json
896
+ Accept-Encoding:
897
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
898
+ Accept:
899
+ - "*/*"
900
+ response:
901
+ status:
902
+ code: 200
903
+ message: OK
904
+ headers:
905
+ Content-Type:
906
+ - application/json; charset=utf-8
907
+ Date:
908
+ - Tue, 21 Apr 2026 17:52:04 GMT
909
+ X-Trace-Id:
910
+ - e22dd6d04d964f9ca3be1018ddb7dd05
911
+ Access-Control-Expose-Headers:
912
+ - Server-Timing, X-Trace-ID
913
+ Server-Timing:
914
+ - l7_lb_tls;dur=188, l7_lb_idle;dur=2, l7_lb_receive;dur=0, l7_lb_total;dur=212
915
+ Strict-Transport-Security:
916
+ - max-age=63072000; includeSubDomains; preload
917
+ Transfer-Encoding:
918
+ - chunked
919
+ Vary:
920
+ - Accept-Encoding
921
+ body:
922
+ encoding: ASCII-8BIT
923
+ string: '{"style_id":"0f49066c-7382-4a1b-922c-62a35ea7fce9","name":"Updated
924
+ Name","creation_time":"2026-04-21T17:52:04.728681Z","updated_time":"2026-04-21T17:52:04.728907Z","language":"en","version":1,"custom_instructions":[],"configured_rules":{}}'
925
+ recorded_at: Tue, 21 Apr 2026 17:52:05 GMT
926
+ recorded_with: VCR 6.3.1