@digipair/skill-sharp 0.96.0 → 0.97.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 (3) hide show
  1. package/package.json +1 -1
  2. package/schema.fr.json +692 -560
  3. package/schema.json +905 -520
package/schema.fr.json CHANGED
@@ -24,597 +24,729 @@
24
24
  "type": "string"
25
25
  }
26
26
  }
27
- ]
28
- }
29
- },
30
- "/stats": {
31
- "post": {
32
- "tags": [
33
- "service"
34
27
  ],
35
- "summary": "Statistiques",
36
- "description": "Retourne des statistiques sur l’image comme la moyenne ou l’écart-type.",
37
- "parameters": [
38
- {
39
- "name": "content",
40
- "required": true,
41
- "schema": {
42
- "type": "string"
28
+ "responses": {
29
+ "200": {
30
+ "description": "Objet des métadonnées de l'image",
31
+ "content": {
32
+ "application/json": {
33
+ "schema": {
34
+ "type": "object",
35
+ "properties": {
36
+ "width": {
37
+ "type": "number",
38
+ "description": "Largeur de l'image en pixels"
39
+ },
40
+ "height": {
41
+ "type": "number",
42
+ "description": "Hauteur de l'image en pixels"
43
+ },
44
+ "channels": {
45
+ "type": "number",
46
+ "description": "Nombre de canaux de couleur"
47
+ },
48
+ "format": {
49
+ "type": "string",
50
+ "description": "Format de l'image (jpeg, png, webp, etc.)"
51
+ },
52
+ "space": {
53
+ "type": "string",
54
+ "description": "Espace colorimétrique (srgb, rgb16, cmyk, etc.)"
55
+ },
56
+ "density": {
57
+ "type": "number",
58
+ "description": "Densité de l'image en pixels par pouce"
59
+ },
60
+ "hasProfile": {
61
+ "type": "boolean",
62
+ "description": "Si l'image a un profil de couleur intégré"
63
+ },
64
+ "hasAlpha": {
65
+ "type": "boolean",
66
+ "description": "Si l'image a un canal alpha"
67
+ }
68
+ }
69
+ "width": 1920,
70
+ "height": 1080,
71
+ "channels": 3,
72
+ "format": "jpeg",
73
+ "space": "srgb",
74
+ "density": 72,
75
+ "hasProfile": false,
76
+ "hasAlpha": false
77
+ }
78
+ }
43
79
  }
44
80
  }
45
- ]
81
+ }
46
82
  }
47
- },
48
- "/raw": {
49
- "post": {
50
- "tags": [
51
- "service"
52
- ],
53
- "summary": "Brut (RAW)",
54
- "description": "Retourne le buffer brut de l’image en base64.",
55
- "parameters": [
56
- {
57
- "name": "content",
58
- "required": true,
59
- "schema": {
60
- "type": "string"
61
- }
83
+ }
84
+ },
85
+ "/stats": {
86
+ "post": {
87
+ "tags": [
88
+ "service"
89
+ ],
90
+ "summary": "Statistiques",
91
+ "description": "Retourne des statistiques sur l’image comme la moyenne ou l’écart-type.",
92
+ "parameters": [
93
+ {
94
+ "name": "content",
95
+ "required": true,
96
+ "schema": {
97
+ "type": "string"
62
98
  }
63
- ]
64
- }
65
- },
66
- "/resize": {
67
- "post": {
68
- "tags": [
69
- "service"
70
- ],
71
- "summary": "Redimensionner",
72
- "description": "Redimensionne l’image selon la largeur et la hauteur spécifiées.",
73
- "parameters": [
74
- {
75
- "name": "content",
76
- "required": true,
77
- "schema": {
78
- "type": "string"
79
- }
80
- },
81
- {
82
- "name": "width",
83
- "required": true,
84
- "schema": {
85
- "type": "number"
86
- }
87
- },
88
- {
89
- "name": "height",
90
- "required": true,
91
- "schema": {
92
- "type": "number"
93
- }
94
- },
95
- {
96
- "name": "options",
97
- "required": false,
98
- "schema": {
99
- "type": "object"
99
+ }
100
+ ],
101
+ "responses": {
102
+ "200": {
103
+ "description": "Objet de statistiques de l'image",
104
+ "content": {
105
+ "application/json": {
106
+ "schema": {
107
+ "type": "object",
108
+ "properties": {
109
+ "channels": {
110
+ "type": "array",
111
+ "items": {
112
+ "type": "object",
113
+ "properties": {
114
+ "min": {
115
+ "type": "number",
116
+ "description": "Valeur de pixel minimale"
117
+ },
118
+ "max": {
119
+ "type": "number",
120
+ "description": "Valeur de pixel maximale"
121
+ },
122
+ "sum": {
123
+ "type": "number",
124
+ "description": "Somme de toutes les valeurs de pixels"
125
+ },
126
+ "squaresSum": {
127
+ "type": "number",
128
+ "description": "Somme des valeurs de pixels au carré"
129
+ },
130
+ "mean": {
131
+ "type": "number",
132
+ "description": "Valeur moyenne des pixels"
133
+ },
134
+ "stdev": {
135
+ "type": "number",
136
+ "description": "Écart-type des valeurs de pixels"
137
+ }
138
+ }
139
+ }
140
+ }
141
+ }
142
+ }
100
143
  }
101
144
  }
102
- ]
145
+ }
103
146
  }
104
- },
105
- "/rotate": {
106
- "post": {
107
- "tags": [
108
- "service"
109
- ],
110
- "summary": "Rotation",
111
- "description": "Fait pivoter l’image (angle optionnel, utilise EXIF si absent).",
112
- "parameters": [
113
- {
114
- "name": "content",
115
- "required": true,
116
- "schema": {
117
- "type": "string"
118
- }
119
- },
120
- {
121
- "name": "angle",
122
- "required": false,
123
- "schema": {
124
- "type": "number"
125
- }
147
+ }
148
+ },
149
+ "/raw": {
150
+ "post": {
151
+ "tags": [
152
+ "service"
153
+ ],
154
+ "summary": "Brut (RAW)",
155
+ "description": "Retourne le buffer brut de l’image en base64.",
156
+ "parameters": [
157
+ {
158
+ "name": "content",
159
+ "required": true,
160
+ "schema": {
161
+ "type": "string"
126
162
  }
127
- ]
128
- }
129
- },
130
- "/extract": {
131
- "post": {
132
- "tags": [
133
- "service"
134
- ],
135
- "summary": "Rogner",
136
- "description": "Extrait une portion de limage.",
137
- "parameters": [
138
- {
139
- "name": "content",
140
- "required": true,
141
- "schema": {
142
- "type": "string"
143
- }
144
- },
145
- {
146
- "name": "left",
147
- "required": true,
148
- "schema": {
149
- "type": "number"
150
- }
151
- },
152
- {
153
- "name": "top",
154
- "required": true,
155
- "schema": {
156
- "type": "number"
157
- }
158
- },
159
- {
160
- "name": "width",
161
- "required": true,
162
- "schema": {
163
- "type": "number"
164
- }
165
- },
166
- {
167
- "name": "height",
168
- "required": true,
169
- "schema": {
170
- "type": "number"
163
+ }
164
+ ],
165
+ "responses": {
166
+ "200": {
167
+ "description": "Buffer brut de l'image en base64 (sans préfixe data URL)",
168
+ "content": {
169
+ "application/json": {
170
+ "schema": {
171
+ "type": "string",
172
+ "description": "Buffer brut de l'image encodé en base64"
173
+ }
171
174
  }
172
175
  }
173
- ]
176
+ }
174
177
  }
175
- },
176
- "/flip": {
177
- "post": {
178
- "tags": [
179
- "service"
180
- ],
181
- "summary": "Miroir vertical",
182
- "description": "Retourne l’image verticalement.",
183
- "parameters": [
184
- {
185
- "name": "content",
186
- "required": true,
187
- "schema": {
188
- "type": "string"
189
- }
178
+ }
179
+ },
180
+ "/resize": {
181
+ "post": {
182
+ "tags": [
183
+ "service"
184
+ ],
185
+ "summary": "Redimensionner",
186
+ "description": "Redimensionne l’image selon la largeur et la hauteur spécifiées.",
187
+ "parameters": [
188
+ {
189
+ "name": "content",
190
+ "required": true,
191
+ "schema": {
192
+ "type": "string"
190
193
  }
191
- ]
192
- }
193
- },
194
- "/flop": {
195
- "post": {
196
- "tags": [
197
- "service"
198
- ],
199
- "summary": "Miroir horizontal",
200
- "description": "Retourne l’image horizontalement.",
201
- "parameters": [
202
- {
203
- "name": "content",
204
- "required": true,
205
- "schema": {
206
- "type": "string"
207
- }
194
+ },
195
+ {
196
+ "name": "width",
197
+ "required": true,
198
+ "schema": {
199
+ "type": "number"
208
200
  }
209
- ]
210
- }
211
- },
212
- "/autoOrient": {
213
- "post": {
214
- "tags": [
215
- "service"
216
- ],
217
- "summary": "Orientation automatique",
218
- "description": "Corrige l’orientation de l’image en fonction des métadonnées EXIF.",
219
- "parameters": [
220
- {
221
- "name": "content",
222
- "required": true,
223
- "schema": {
224
- "type": "string"
225
- }
201
+ },
202
+ {
203
+ "name": "height",
204
+ "required": true,
205
+ "schema": {
206
+ "type": "number"
226
207
  }
227
- ]
228
- }
229
- },
230
- "/grayscale": {
231
- "post": {
232
- "tags": [
233
- "service"
234
- ],
235
- "summary": "Niveaux de gris",
236
- "description": "Convertit l’image en niveaux de gris.",
237
- "parameters": [
238
- {
239
- "name": "content",
240
- "required": true,
241
- "schema": {
242
- "type": "string"
243
- }
208
+ },
209
+ {
210
+ "name": "options",
211
+ "required": false,
212
+ "schema": {
213
+ "type": "object"
244
214
  }
245
- ]
246
- }
247
- },
248
- "/linear": {
249
- "post": {
250
- "tags": [
251
- "service"
252
- ],
253
- "summary": "Linéaire",
254
- "description": "Applique une transformation linéaire à l’image.",
255
- "parameters": [
256
- {
257
- "name": "content",
258
- "required": true,
259
- "schema": {
260
- "type": "string"
261
- }
262
- },
263
- {
264
- "name": "multiplier",
265
- "required": true,
266
- "schema": {
267
- "type": "number"
268
- }
269
- },
270
- {
271
- "name": "offset",
272
- "required": true,
273
- "schema": {
274
- "type": "number"
275
- }
215
+ }
216
+ ]
217
+ }
218
+ },
219
+ "/rotate": {
220
+ "post": {
221
+ "tags": [
222
+ "service"
223
+ ],
224
+ "summary": "Rotation",
225
+ "description": "Fait pivoter l’image (angle optionnel, utilise EXIF si absent).",
226
+ "parameters": [
227
+ {
228
+ "name": "content",
229
+ "required": true,
230
+ "schema": {
231
+ "type": "string"
276
232
  }
277
- ]
278
- }
279
- },
280
- "/threshold": {
281
- "post": {
282
- "tags": [
283
- "service"
284
- ],
285
- "summary": "Seuil",
286
- "description": "Applique un seuil à l’image pour la convertir en noir et blanc.",
287
- "parameters": [
288
- {
289
- "name": "content",
290
- "required": true,
291
- "schema": {
292
- "type": "string"
293
- }
294
- },
295
- {
296
- "name": "level",
297
- "required": false,
298
- "schema": {
299
- "type": "number",
300
- "default": 128
301
- }
302
- },
303
- {
304
- "name": "option",
305
- "required": false,
306
- "schema": {
307
- "type": "object"
308
- }
233
+ },
234
+ {
235
+ "name": "angle",
236
+ "required": false,
237
+ "schema": {
238
+ "type": "number"
309
239
  }
310
- ]
311
- }
312
- },
313
- "/tint": {
314
- "post": {
315
- "tags": [
316
- "service"
317
- ],
318
- "summary": "Teinte",
319
- "description": "Applique une teinte colorée à l’image.",
320
- "parameters": [
321
- {
322
- "name": "content",
323
- "required": true,
324
- "schema": {
325
- "type": "string"
326
- }
327
- },
328
- {
329
- "name": "r",
330
- "required": true,
331
- "schema": {
332
- "type": "number"
333
- }
334
- },
335
- {
336
- "name": "g",
337
- "required": true,
338
- "schema": {
339
- "type": "number"
340
- }
341
- },
342
- {
343
- "name": "b",
344
- "required": true,
345
- "schema": {
346
- "type": "number"
347
- }
240
+ }
241
+ ]
242
+ }
243
+ },
244
+ "/extract": {
245
+ "post": {
246
+ "tags": [
247
+ "service"
248
+ ],
249
+ "summary": "Rogner",
250
+ "description": "Extrait une portion de l’image.",
251
+ "parameters": [
252
+ {
253
+ "name": "content",
254
+ "required": true,
255
+ "schema": {
256
+ "type": "string"
348
257
  }
349
- ]
350
- }
351
- },
352
- "/modulate": {
353
- "post": {
354
- "tags": [
355
- "service"
356
- ],
357
- "summary": "Modulation",
358
- "description": "Ajuste la luminosité, la saturation et la teinte.",
359
- "parameters": [
360
- {
361
- "name": "content",
362
- "required": true,
363
- "schema": {
364
- "type": "string"
365
- }
366
- },
367
- {
368
- "name": "brightness",
369
- "required": false,
370
- "schema": {
371
- "type": "number"
372
- }
373
- },
374
- {
375
- "name": "saturation",
376
- "required": false,
377
- "schema": {
378
- "type": "number"
379
- }
380
- },
381
- {
382
- "name": "hue",
383
- "required": false,
384
- "schema": {
385
- "type": "number"
386
- }
258
+ },
259
+ {
260
+ "name": "left",
261
+ "required": true,
262
+ "schema": {
263
+ "type": "number"
387
264
  }
388
- ]
389
- }
390
- },
391
- "/blur": {
392
- "post": {
393
- "tags": [
394
- "service"
395
- ],
396
- "summary": "Flou",
397
- "description": "Applique un flou à l’image.",
398
- "parameters": [
399
- {
400
- "name": "content",
401
- "required": true,
402
- "schema": {
403
- "type": "string"
404
- }
405
- },
406
- {
407
- "name": "radius",
408
- "required": false,
409
- "schema": {
410
- "type": "number"
411
- }
265
+ },
266
+ {
267
+ "name": "top",
268
+ "required": true,
269
+ "schema": {
270
+ "type": "number"
412
271
  }
413
- ]
414
- }
415
- },
416
- "/sharpen": {
417
- "post": {
418
- "tags": [
419
- "service"
420
- ],
421
- "summary": "Netteté",
422
- "description": "Accentue les contours de l’image.",
423
- "parameters": [
424
- {
425
- "name": "content",
426
- "required": true,
427
- "schema": {
428
- "type": "string"
429
- }
272
+ },
273
+ {
274
+ "name": "width",
275
+ "required": true,
276
+ "schema": {
277
+ "type": "number"
430
278
  }
431
- ]
432
- }
433
- },
434
- "/toFormat": {
435
- "post": {
436
- "tags": [
437
- "service"
438
- ],
439
- "summary": "Conversion de format",
440
- "description": "Convertit l’image vers un autre format.",
441
- "parameters": [
442
- {
443
- "name": "content",
444
- "required": true,
445
- "schema": {
446
- "type": "string"
447
- }
448
- },
449
- {
450
- "name": "format",
451
- "required": true,
452
- "description": "jpeg, png, webp, avif",
453
- "schema": {
454
- "type": "string",
455
- "enum": [
456
- "jpeg",
457
- "png",
458
- "webp",
459
- "avif"
460
- ]
461
- }
279
+ },
280
+ {
281
+ "name": "height",
282
+ "required": true,
283
+ "schema": {
284
+ "type": "number"
462
285
  }
463
- ]
464
- }
465
- },
466
- "/jpeg": {
467
- "post": {
468
- "tags": [
469
- "service"
470
- ],
471
- "summary": "Exporter en JPEG",
472
- "description": "Convertit l’image en format JPEG avec qualité personnalisable.",
473
- "parameters": [
474
- {
475
- "name": "content",
476
- "required": true,
477
- "schema": {
478
- "type": "string"
479
- }
480
- },
481
- {
482
- "name": "quality",
483
- "required": false,
484
- "schema": {
485
- "type": "number",
486
- "default": 80
487
- }
286
+ }
287
+ ]
288
+ }
289
+ },
290
+ "/flip": {
291
+ "post": {
292
+ "tags": [
293
+ "service"
294
+ ],
295
+ "summary": "Miroir vertical",
296
+ "description": "Retourne l’image verticalement.",
297
+ "parameters": [
298
+ {
299
+ "name": "content",
300
+ "required": true,
301
+ "schema": {
302
+ "type": "string"
488
303
  }
489
- ]
490
- }
491
- },
492
- "/png": {
493
- "post": {
494
- "tags": [
495
- "service"
496
- ],
497
- "summary": "Exporter en PNG",
498
- "description": "Convertit l’image en format PNG avec niveau de compression personnalisé.",
499
- "parameters": [
500
- {
501
- "name": "content",
502
- "required": true,
503
- "schema": {
504
- "type": "string"
505
- }
506
- },
507
- {
508
- "name": "compressionLevel",
509
- "required": false,
510
- "schema": {
511
- "type": "number",
512
- "default": 6
513
- }
304
+ }
305
+ ]
306
+ }
307
+ },
308
+ "/flop": {
309
+ "post": {
310
+ "tags": [
311
+ "service"
312
+ ],
313
+ "summary": "Miroir horizontal",
314
+ "description": "Retourne l’image horizontalement.",
315
+ "parameters": [
316
+ {
317
+ "name": "content",
318
+ "required": true,
319
+ "schema": {
320
+ "type": "string"
514
321
  }
515
- ]
516
- }
517
- },
518
- "/webp": {
519
- "post": {
520
- "tags": [
521
- "service"
522
- ],
523
- "summary": "Exporter en WebP",
524
- "description": "Convertit l’image en format WebP avec qualité personnalisable.",
525
- "parameters": [
526
- {
527
- "name": "content",
528
- "required": true,
529
- "schema": {
530
- "type": "string"
531
- }
532
- },
533
- {
534
- "name": "quality",
535
- "required": false,
536
- "schema": {
537
- "type": "number",
538
- "default": 80
539
- }
322
+ }
323
+ ]
324
+ }
325
+ },
326
+ "/autoOrient": {
327
+ "post": {
328
+ "tags": [
329
+ "service"
330
+ ],
331
+ "summary": "Orientation automatique",
332
+ "description": "Corrige l’orientation de l’image en fonction des métadonnées EXIF.",
333
+ "parameters": [
334
+ {
335
+ "name": "content",
336
+ "required": true,
337
+ "schema": {
338
+ "type": "string"
540
339
  }
541
- ]
542
- }
543
- },
544
- "/avif": {
545
- "post": {
546
- "tags": [
547
- "service"
548
- ],
549
- "summary": "Exporter en AVIF",
550
- "description": "Convertit l’image en format AVIF avec qualité personnalisable.",
551
- "parameters": [
552
- {
553
- "name": "content",
554
- "required": true,
555
- "schema": {
556
- "type": "string"
557
- }
558
- },
559
- {
560
- "name": "quality",
561
- "required": false,
562
- "schema": {
563
- "type": "number",
564
- "default": 50
565
- }
340
+ }
341
+ ]
342
+ }
343
+ },
344
+ "/grayscale": {
345
+ "post": {
346
+ "tags": [
347
+ "service"
348
+ ],
349
+ "summary": "Niveaux de gris",
350
+ "description": "Convertit l’image en niveaux de gris.",
351
+ "parameters": [
352
+ {
353
+ "name": "content",
354
+ "required": true,
355
+ "schema": {
356
+ "type": "string"
566
357
  }
567
- ]
568
- }
569
- },
570
- "/composite": {
571
- "post": {
572
- "tags": [
573
- "service"
574
- ],
575
- "summary": "Superposition",
576
- "description": "Superpose une ou plusieurs images (ex. : watermark).",
577
- "parameters": [
578
- {
579
- "name": "content",
580
- "required": true,
581
- "schema": {
582
- "type": "string"
583
- }
584
- },
585
- {
586
- "name": "overlays",
587
- "required": true,
588
- "description": "Liste d’éléments { input (base64), top, left }",
589
- "schema": {
590
- "type": "array",
591
- "items": {
592
- "type": "object",
593
- "properties": {
594
- "input": {
595
- "type": "string"
596
- },
597
- "top": {
598
- "type": "number"
599
- },
600
- "left": {
601
- "type": "number"
602
- }
358
+ }
359
+ ]
360
+ }
361
+ },
362
+ "/linear": {
363
+ "post": {
364
+ "tags": [
365
+ "service"
366
+ ],
367
+ "summary": "Linéaire",
368
+ "description": "Applique une transformation linéaire à l’image.",
369
+ "parameters": [
370
+ {
371
+ "name": "content",
372
+ "required": true,
373
+ "schema": {
374
+ "type": "string"
375
+ }
376
+ },
377
+ {
378
+ "name": "multiplier",
379
+ "required": true,
380
+ "schema": {
381
+ "type": "number"
382
+ }
383
+ },
384
+ {
385
+ "name": "offset",
386
+ "required": true,
387
+ "schema": {
388
+ "type": "number"
389
+ }
390
+ }
391
+ ]
392
+ }
393
+ },
394
+ "/threshold": {
395
+ "post": {
396
+ "tags": [
397
+ "service"
398
+ ],
399
+ "summary": "Seuil",
400
+ "description": "Applique un seuil à l’image pour la convertir en noir et blanc.",
401
+ "parameters": [
402
+ {
403
+ "name": "content",
404
+ "required": true,
405
+ "schema": {
406
+ "type": "string"
407
+ }
408
+ },
409
+ {
410
+ "name": "level",
411
+ "required": false,
412
+ "schema": {
413
+ "type": "number",
414
+ "default": 128
415
+ }
416
+ },
417
+ {
418
+ "name": "option",
419
+ "required": false,
420
+ "schema": {
421
+ "type": "object"
422
+ }
423
+ }
424
+ ]
425
+ }
426
+ },
427
+ "/tint": {
428
+ "post": {
429
+ "tags": [
430
+ "service"
431
+ ],
432
+ "summary": "Teinte",
433
+ "description": "Applique une teinte colorée à l’image.",
434
+ "parameters": [
435
+ {
436
+ "name": "content",
437
+ "required": true,
438
+ "schema": {
439
+ "type": "string"
440
+ }
441
+ },
442
+ {
443
+ "name": "r",
444
+ "required": true,
445
+ "schema": {
446
+ "type": "number"
447
+ }
448
+ },
449
+ {
450
+ "name": "g",
451
+ "required": true,
452
+ "schema": {
453
+ "type": "number"
454
+ }
455
+ },
456
+ {
457
+ "name": "b",
458
+ "required": true,
459
+ "schema": {
460
+ "type": "number"
461
+ }
462
+ }
463
+ ]
464
+ }
465
+ },
466
+ "/modulate": {
467
+ "post": {
468
+ "tags": [
469
+ "service"
470
+ ],
471
+ "summary": "Modulation",
472
+ "description": "Ajuste la luminosité, la saturation et la teinte.",
473
+ "parameters": [
474
+ {
475
+ "name": "content",
476
+ "required": true,
477
+ "schema": {
478
+ "type": "string"
479
+ }
480
+ },
481
+ {
482
+ "name": "brightness",
483
+ "required": false,
484
+ "schema": {
485
+ "type": "number"
486
+ }
487
+ },
488
+ {
489
+ "name": "saturation",
490
+ "required": false,
491
+ "schema": {
492
+ "type": "number"
493
+ }
494
+ },
495
+ {
496
+ "name": "hue",
497
+ "required": false,
498
+ "schema": {
499
+ "type": "number"
500
+ }
501
+ }
502
+ ]
503
+ }
504
+ },
505
+ "/blur": {
506
+ "post": {
507
+ "tags": [
508
+ "service"
509
+ ],
510
+ "summary": "Flou",
511
+ "description": "Applique un flou à l’image.",
512
+ "parameters": [
513
+ {
514
+ "name": "content",
515
+ "required": true,
516
+ "schema": {
517
+ "type": "string"
518
+ }
519
+ },
520
+ {
521
+ "name": "radius",
522
+ "required": false,
523
+ "schema": {
524
+ "type": "number"
525
+ }
526
+ }
527
+ ]
528
+ }
529
+ },
530
+ "/sharpen": {
531
+ "post": {
532
+ "tags": [
533
+ "service"
534
+ ],
535
+ "summary": "Netteté",
536
+ "description": "Accentue les contours de l’image.",
537
+ "parameters": [
538
+ {
539
+ "name": "content",
540
+ "required": true,
541
+ "schema": {
542
+ "type": "string"
543
+ }
544
+ }
545
+ ]
546
+ }
547
+ },
548
+ "/toFormat": {
549
+ "post": {
550
+ "tags": [
551
+ "service"
552
+ ],
553
+ "summary": "Conversion de format",
554
+ "description": "Convertit l’image vers un autre format.",
555
+ "parameters": [
556
+ {
557
+ "name": "content",
558
+ "required": true,
559
+ "schema": {
560
+ "type": "string"
561
+ }
562
+ },
563
+ {
564
+ "name": "format",
565
+ "required": true,
566
+ "description": "jpeg, png, webp, avif",
567
+ "schema": {
568
+ "type": "string",
569
+ "enum": [
570
+ "jpeg",
571
+ "png",
572
+ "webp",
573
+ "avif"
574
+ ]
575
+ }
576
+ }
577
+ ]
578
+ }
579
+ },
580
+ "/jpeg": {
581
+ "post": {
582
+ "tags": [
583
+ "service"
584
+ ],
585
+ "summary": "Exporter en JPEG",
586
+ "description": "Convertit l’image en format JPEG avec qualité personnalisable.",
587
+ "parameters": [
588
+ {
589
+ "name": "content",
590
+ "required": true,
591
+ "schema": {
592
+ "type": "string"
593
+ }
594
+ },
595
+ {
596
+ "name": "quality",
597
+ "required": false,
598
+ "schema": {
599
+ "type": "number",
600
+ "default": 80
601
+ }
602
+ }
603
+ ]
604
+ }
605
+ },
606
+ "/png": {
607
+ "post": {
608
+ "tags": [
609
+ "service"
610
+ ],
611
+ "summary": "Exporter en PNG",
612
+ "description": "Convertit l’image en format PNG avec niveau de compression personnalisé.",
613
+ "parameters": [
614
+ {
615
+ "name": "content",
616
+ "required": true,
617
+ "schema": {
618
+ "type": "string"
619
+ }
620
+ },
621
+ {
622
+ "name": "compressionLevel",
623
+ "required": false,
624
+ "schema": {
625
+ "type": "number",
626
+ "default": 6
627
+ }
628
+ }
629
+ ]
630
+ }
631
+ },
632
+ "/webp": {
633
+ "post": {
634
+ "tags": [
635
+ "service"
636
+ ],
637
+ "summary": "Exporter en WebP",
638
+ "description": "Convertit l’image en format WebP avec qualité personnalisable.",
639
+ "parameters": [
640
+ {
641
+ "name": "content",
642
+ "required": true,
643
+ "schema": {
644
+ "type": "string"
645
+ }
646
+ },
647
+ {
648
+ "name": "quality",
649
+ "required": false,
650
+ "schema": {
651
+ "type": "number",
652
+ "default": 80
653
+ }
654
+ }
655
+ ]
656
+ }
657
+ },
658
+ "/avif": {
659
+ "post": {
660
+ "tags": [
661
+ "service"
662
+ ],
663
+ "summary": "Exporter en AVIF",
664
+ "description": "Convertit l’image en format AVIF avec qualité personnalisable.",
665
+ "parameters": [
666
+ {
667
+ "name": "content",
668
+ "required": true,
669
+ "schema": {
670
+ "type": "string"
671
+ }
672
+ },
673
+ {
674
+ "name": "quality",
675
+ "required": false,
676
+ "schema": {
677
+ "type": "number",
678
+ "default": 50
679
+ }
680
+ }
681
+ ]
682
+ }
683
+ },
684
+ "/composite": {
685
+ "post": {
686
+ "tags": [
687
+ "service"
688
+ ],
689
+ "summary": "Superposition",
690
+ "description": "Superpose une ou plusieurs images (ex. : watermark).",
691
+ "parameters": [
692
+ {
693
+ "name": "content",
694
+ "required": true,
695
+ "schema": {
696
+ "type": "string"
697
+ }
698
+ },
699
+ {
700
+ "name": "overlays",
701
+ "required": true,
702
+ "description": "Liste d’éléments { input (base64), top, left }",
703
+ "schema": {
704
+ "type": "array",
705
+ "items": {
706
+ "type": "object",
707
+ "properties": {
708
+ "input": {
709
+ "type": "string"
710
+ },
711
+ "top": {
712
+ "type": "number"
603
713
  },
604
- "required": [
605
- "input",
606
- "top",
607
- "left"
608
- ]
714
+ "left": {
715
+ "type": "number"
716
+ }
717
+ },
718
+ "required": [
719
+ "input",
720
+ "top",
721
+ "left"
722
+ ]
723
+ }
724
+ }
725
+ }
726
+ ],
727
+ "responses": {
728
+ "200": {
729
+ "description": "Image composite avec superpositions en data URL base64",
730
+ "content": {
731
+ "application/json": {
732
+ "schema": {
733
+ "type": "string",
734
+ "description": "Image encodée en base64 avec préfixe data URL"
609
735
  }
610
736
  }
611
737
  }
612
- ]
738
+ }
613
739
  }
614
740
  }
615
- },
616
- "components": {
617
- "schemas": {}
618
- },
619
- "x-scene-blocks": {}
741
+ }
742
+ },
743
+ "components": {
744
+ "schemas": {
745
+ "ImageResponse": {
746
+ "type": "string",
747
+ "description": "Image encodée en base64 avec préfixe data URL"
748
+ }
749
+ }
750
+ },
751
+ "x-scene-blocks": {}
620
752
  }