@raster-app/sdk 0.1.0-rc.0 → 0.1.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.
@@ -6,32 +6,11 @@ export interface paths {
6
6
  path?: never;
7
7
  cookie?: never;
8
8
  };
9
- /** Resolve the credential's organization and library scope. */
10
- get: {
11
- parameters: {
12
- query?: never;
13
- header: {
14
- "Api-Version": components["parameters"]["ApiVersion"];
15
- };
16
- path?: never;
17
- cookie?: never;
18
- };
19
- requestBody?: never;
20
- responses: {
21
- /** @description OK */
22
- 200: {
23
- headers: {
24
- [name: string]: unknown;
25
- };
26
- content: {
27
- "application/json": {
28
- data: components["schemas"]["Me"];
29
- };
30
- };
31
- };
32
- 401: components["responses"]["Unauthorized"];
33
- };
34
- };
9
+ /**
10
+ * Resolve the credential's organization and library scope.
11
+ * @description Returns the organization the presented credential belongs to and the libraries it can reach, each with a read or write access level. Call this first to discover ids — every other operation needs an organizationId and libraryId.
12
+ */
13
+ get: operations["getMe"];
35
14
  put?: never;
36
15
  post?: never;
37
16
  delete?: never;
@@ -51,50 +30,9 @@ export interface paths {
51
30
  put?: never;
52
31
  /**
53
32
  * Create an organization, library, and API key with no account.
54
- * @description Anonymous — mints the key, so send no Authorization header. https://raster.app/docs/guides/start-without-an-account
33
+ * @description Anonymous — mints the key, so send no Authorization header. Give it an email address and it returns a ready-to-use organization, library, API key, and a claim URL to hand the user so they can attach the library to a real account later. Use this when an agent needs somewhere to put images before the user has signed up. https://raster.app/docs/guides/start-without-an-account
55
34
  */
56
- post: {
57
- parameters: {
58
- query?: never;
59
- header: {
60
- "Api-Version": components["parameters"]["ApiVersion"];
61
- };
62
- path?: never;
63
- cookie?: never;
64
- };
65
- requestBody: {
66
- content: {
67
- "application/json": {
68
- /** Format: email */
69
- email: string;
70
- name?: string;
71
- };
72
- };
73
- };
74
- responses: {
75
- /** @description OK */
76
- 200: {
77
- headers: {
78
- [name: string]: unknown;
79
- };
80
- content: {
81
- "application/json": {
82
- data: {
83
- organizationId: string;
84
- libraryId: string;
85
- apiKey: string;
86
- /** Format: uri */
87
- claimUrl: string;
88
- /** Format: date-time */
89
- expiresAt: string;
90
- emailSent: boolean;
91
- };
92
- };
93
- };
94
- };
95
- 400: components["responses"]["BadRequest"];
96
- };
97
- };
35
+ post: operations["createEphemeralLibrary"];
98
36
  delete?: never;
99
37
  options?: never;
100
38
  head?: never;
@@ -108,75 +46,17 @@ export interface paths {
108
46
  path?: never;
109
47
  cookie?: never;
110
48
  };
111
- /** List libraries the key can reach. */
112
- get: {
113
- parameters: {
114
- query?: {
115
- /** @description Zero-based page index. */
116
- page?: number;
117
- pageSize?: number;
118
- };
119
- header: {
120
- "Api-Version": components["parameters"]["ApiVersion"];
121
- };
122
- path: {
123
- organizationId: components["parameters"]["OrganizationId"];
124
- };
125
- cookie?: never;
126
- };
127
- requestBody?: never;
128
- responses: {
129
- /** @description OK */
130
- 200: {
131
- headers: {
132
- [name: string]: unknown;
133
- };
134
- content: {
135
- "application/json": {
136
- data: components["schemas"]["Library"][];
137
- };
138
- };
139
- };
140
- 401: components["responses"]["Unauthorized"];
141
- };
142
- };
49
+ /**
50
+ * List libraries the credential can reach.
51
+ * @description Paginated list of the libraries inside one organization that the presented credential is allowed to see. Use it to resolve a human-supplied library name to the libraryId every asset operation needs.
52
+ */
53
+ get: operations["listLibraries"];
143
54
  put?: never;
144
- /** Create a library in this organization. */
145
- post: {
146
- parameters: {
147
- query?: never;
148
- header: {
149
- "Api-Version": components["parameters"]["ApiVersion"];
150
- };
151
- path: {
152
- organizationId: components["parameters"]["OrganizationId"];
153
- };
154
- cookie?: never;
155
- };
156
- requestBody: {
157
- content: {
158
- "application/json": {
159
- name: string;
160
- slug?: string;
161
- };
162
- };
163
- };
164
- responses: {
165
- /** @description Created */
166
- 201: {
167
- headers: {
168
- [name: string]: unknown;
169
- };
170
- content: {
171
- "application/json": {
172
- data: components["schemas"]["Library"];
173
- };
174
- };
175
- };
176
- 400: components["responses"]["BadRequest"];
177
- 401: components["responses"]["Unauthorized"];
178
- };
179
- };
55
+ /**
56
+ * Create a library in this organization.
57
+ * @description Creates an empty library. Requires a write-scoped credential; a read-only key returns API_KEY_READ_ONLY, and the free plan returns LIBRARY_LIMIT_EXCEEDED once its library allowance is used up.
58
+ */
59
+ post: operations["createLibrary"];
180
60
  delete?: never;
181
61
  options?: never;
182
62
  head?: never;
@@ -196,41 +76,11 @@ export interface paths {
196
76
  delete?: never;
197
77
  options?: never;
198
78
  head?: never;
199
- /** Rename a library. */
200
- patch: {
201
- parameters: {
202
- query?: never;
203
- header: {
204
- "Api-Version": components["parameters"]["ApiVersion"];
205
- };
206
- path: {
207
- organizationId: components["parameters"]["OrganizationId"];
208
- libraryId: components["parameters"]["LibraryId"];
209
- };
210
- cookie?: never;
211
- };
212
- requestBody: {
213
- content: {
214
- "application/json": {
215
- name: string;
216
- };
217
- };
218
- };
219
- responses: {
220
- /** @description OK */
221
- 200: {
222
- headers: {
223
- [name: string]: unknown;
224
- };
225
- content: {
226
- "application/json": {
227
- data: components["schemas"]["Library"];
228
- };
229
- };
230
- };
231
- 404: components["responses"]["NotFound"];
232
- };
233
- };
79
+ /**
80
+ * Rename a library.
81
+ * @description Changes a library's display name. The libraryId is unchanged, so existing integrations and asset URLs keep working.
82
+ */
83
+ patch: operations["renameLibrary"];
234
84
  trace?: never;
235
85
  };
236
86
  "/organizations/{organizationId}/libraries/{libraryId}/assets": {
@@ -240,122 +90,22 @@ export interface paths {
240
90
  path?: never;
241
91
  cookie?: never;
242
92
  };
243
- /** List assets (paginated, optional tag filter). */
244
- get: {
245
- parameters: {
246
- query?: {
247
- page?: number;
248
- pageSize?: number;
249
- /** @description Comma-separated tag filter, up to 50. */
250
- tags?: string;
251
- };
252
- header: {
253
- "Api-Version": components["parameters"]["ApiVersion"];
254
- };
255
- path: {
256
- organizationId: components["parameters"]["OrganizationId"];
257
- libraryId: components["parameters"]["LibraryId"];
258
- };
259
- cookie?: never;
260
- };
261
- requestBody?: never;
262
- responses: {
263
- /** @description OK */
264
- 200: {
265
- headers: {
266
- [name: string]: unknown;
267
- };
268
- content: {
269
- "application/json": {
270
- data: components["schemas"]["Asset"][];
271
- };
272
- };
273
- };
274
- 401: components["responses"]["Unauthorized"];
275
- };
276
- };
93
+ /**
94
+ * List assets (paginated, optional tag filter).
95
+ * @description Pages through one library's assets, newest first, optionally narrowed to assets carrying every tag in the `tags` filter. Each asset carries a permanent public CDN `url` you can embed directly. To find an asset by what it depicts rather than by tag, use searchAssets instead.
96
+ */
97
+ get: operations["listAssets"];
277
98
  put?: never;
278
- /** Upload up to 20 files. */
279
- post: {
280
- parameters: {
281
- query?: never;
282
- header: {
283
- "Api-Version": components["parameters"]["ApiVersion"];
284
- };
285
- path: {
286
- organizationId: components["parameters"]["OrganizationId"];
287
- libraryId: components["parameters"]["LibraryId"];
288
- };
289
- cookie?: never;
290
- };
291
- requestBody: {
292
- content: {
293
- "multipart/form-data": {
294
- files: string[];
295
- /** @description Attach the uploaded file as a variant of this asset. Send exactly one file with it. The asset must be an original in this library, of the same media kind as the file. */
296
- parentId?: string;
297
- };
298
- };
299
- };
300
- responses: {
301
- /** @description OK */
302
- 200: {
303
- headers: {
304
- [name: string]: unknown;
305
- };
306
- content: {
307
- "application/json": {
308
- data: {
309
- responseText: string;
310
- assets: components["schemas"]["Asset"][];
311
- };
312
- };
313
- };
314
- };
315
- 400: components["responses"]["BadRequest"];
316
- };
317
- };
99
+ /**
100
+ * Upload up to 20 files.
101
+ * @description Uploads image or video files as multipart/form-data under the `files` field, up to 20 per call. Each returned asset carries a permanent public CDN `url` — embed that rather than re-hosting the bytes. Processing (thumbnails, AI tags, descriptions) continues after the response, so re-fetch an asset to see it fully populated.
102
+ */
103
+ post: operations["uploadAssets"];
318
104
  /**
319
105
  * Move up to 100 assets to trash (soft delete).
320
- * @description Soft delete — assets stay recoverable from trash until the 30-day reaper. Trashing an asset also trashes its variants; a variant id on its own is rejected with 400.
106
+ * @description Soft delete — assets stay recoverable from trash for 30 days, then are permanently removed. Trashing an asset also trashes its variants; a variant id on its own is rejected with 400.
321
107
  */
322
- delete: {
323
- parameters: {
324
- query?: never;
325
- header: {
326
- "Api-Version": components["parameters"]["ApiVersion"];
327
- };
328
- path: {
329
- organizationId: components["parameters"]["OrganizationId"];
330
- libraryId: components["parameters"]["LibraryId"];
331
- };
332
- cookie?: never;
333
- };
334
- requestBody: {
335
- content: {
336
- "application/json": {
337
- ids: string[];
338
- };
339
- };
340
- };
341
- responses: {
342
- /** @description OK */
343
- 200: {
344
- headers: {
345
- [name: string]: unknown;
346
- };
347
- content: {
348
- "application/json": {
349
- data: {
350
- success: boolean;
351
- message: string;
352
- ids: string[];
353
- };
354
- };
355
- };
356
- };
357
- };
358
- };
108
+ delete: operations["deleteAssets"];
359
109
  options?: never;
360
110
  head?: never;
361
111
  patch?: never;
@@ -372,35 +122,7 @@ export interface paths {
372
122
  * Get one asset by id.
373
123
  * @description Returns the full asset, including its non-destructive variants in the `variants` field; each variant carries its own tags/description — fetch a variant by its id for those.
374
124
  */
375
- get: {
376
- parameters: {
377
- query?: never;
378
- header: {
379
- "Api-Version": components["parameters"]["ApiVersion"];
380
- };
381
- path: {
382
- organizationId: components["parameters"]["OrganizationId"];
383
- libraryId: components["parameters"]["LibraryId"];
384
- assetId: components["parameters"]["AssetId"];
385
- };
386
- cookie?: never;
387
- };
388
- requestBody?: never;
389
- responses: {
390
- /** @description OK */
391
- 200: {
392
- headers: {
393
- [name: string]: unknown;
394
- };
395
- content: {
396
- "application/json": {
397
- data: components["schemas"]["Asset"];
398
- };
399
- };
400
- };
401
- 404: components["responses"]["NotFound"];
402
- };
403
- };
125
+ get: operations["getAsset"];
404
126
  put?: never;
405
127
  post?: never;
406
128
  delete?: never;
@@ -422,44 +144,11 @@ export interface paths {
422
144
  delete?: never;
423
145
  options?: never;
424
146
  head?: never;
425
- /** Replace one asset's description. */
426
- patch: {
427
- parameters: {
428
- query?: never;
429
- header: {
430
- "Api-Version": components["parameters"]["ApiVersion"];
431
- };
432
- path: {
433
- organizationId: components["parameters"]["OrganizationId"];
434
- libraryId: components["parameters"]["LibraryId"];
435
- assetId: components["parameters"]["AssetId"];
436
- };
437
- cookie?: never;
438
- };
439
- requestBody: {
440
- content: {
441
- "application/json": {
442
- description: string;
443
- };
444
- };
445
- };
446
- responses: {
447
- /** @description OK */
448
- 200: {
449
- headers: {
450
- [name: string]: unknown;
451
- };
452
- content: {
453
- "application/json": {
454
- data: {
455
- assetId: string;
456
- description: string;
457
- };
458
- };
459
- };
460
- };
461
- };
462
- };
147
+ /**
148
+ * Replace one asset's description.
149
+ * @description Overwrites the asset's description with the supplied text — this is a replace, not an append. Descriptions are indexed, so a good one makes the asset findable through searchAssets.
150
+ */
151
+ patch: operations["updateAssetDescription"];
463
152
  trace?: never;
464
153
  };
465
154
  "/organizations/{organizationId}/libraries/{libraryId}/assets/{assetId}/promote": {
@@ -473,53 +162,16 @@ export interface paths {
473
162
  put?: never;
474
163
  /**
475
164
  * Make a variant the asset's default.
476
- * @description The variant's pixels replace what the asset serves, at the SAME URL, so anything already embedding that URL shows the new file. The previous default is preserved as a new variant and keeps the name it had; the asset keeps its id and URL and takes the promoted variant's name. Its description and the tags generated from its image follow the picture — the promoted variant hands over any it carries, and the preserved variant keeps the ones that described it, while tags you added yourself stay on the asset. Rejected while the asset is itself still being processed (a video whose poster has not landed yet). The promote is accepted and the swap completes a moment later; re-fetch the asset to see it reflected.
165
+ * @description The variant's pixels replace what the asset serves, at the SAME URL, so anything already embedding that URL shows the new file. The previous default is preserved as a new variant and keeps the name it had; the asset keeps its id and URL and takes the promoted variant's name. Its description and the tags generated from its image follow the picture — the promoted variant hands over any it carries, and the preserved variant keeps the ones that described it, while tags you added yourself stay on the asset. Rejected while the asset is a video that is still being processed. The promote is accepted and the swap completes a moment later; re-fetch the asset to see it reflected.
477
166
  */
478
- post: {
479
- parameters: {
480
- query?: never;
481
- header: {
482
- "Api-Version": components["parameters"]["ApiVersion"];
483
- };
484
- path: {
485
- organizationId: components["parameters"]["OrganizationId"];
486
- libraryId: components["parameters"]["LibraryId"];
487
- assetId: components["parameters"]["AssetId"];
488
- };
489
- cookie?: never;
490
- };
491
- requestBody: {
492
- content: {
493
- "application/json": {
494
- variantId: string;
495
- };
496
- };
497
- };
498
- responses: {
499
- /** @description OK */
500
- 200: {
501
- headers: {
502
- [name: string]: unknown;
503
- };
504
- content: {
505
- "application/json": {
506
- data: {
507
- assetId: string;
508
- promotedVariantId: string;
509
- demotedVariantId: string;
510
- };
511
- };
512
- };
513
- };
514
- };
515
- };
167
+ post: operations["promoteVariant"];
516
168
  delete?: never;
517
169
  options?: never;
518
170
  head?: never;
519
171
  patch?: never;
520
172
  trace?: never;
521
173
  };
522
- "/organizations/{organizationId}/libraries/{libraryId}/assets/tag": {
174
+ "/organizations/{organizationId}/libraries/{libraryId}/assets/{assetId}/approval": {
523
175
  parameters: {
524
176
  query?: never;
525
177
  header?: never;
@@ -528,43 +180,31 @@ export interface paths {
528
180
  };
529
181
  get?: never;
530
182
  put?: never;
531
- /** Apply up to 20 tags to up to 100 assets. */
532
- post: {
533
- parameters: {
534
- query?: never;
535
- header: {
536
- "Api-Version": components["parameters"]["ApiVersion"];
537
- };
538
- path: {
539
- organizationId: components["parameters"]["OrganizationId"];
540
- libraryId: components["parameters"]["LibraryId"];
541
- };
542
- cookie?: never;
543
- };
544
- requestBody: {
545
- content: {
546
- "application/json": {
547
- assetIds: string[];
548
- tags: string[];
549
- };
550
- };
551
- };
552
- responses: {
553
- /** @description OK */
554
- 200: {
555
- headers: {
556
- [name: string]: unknown;
557
- };
558
- content: {
559
- "application/json": {
560
- data: {
561
- taggedCount: number;
562
- };
563
- };
564
- };
565
- };
566
- };
183
+ post?: never;
184
+ delete?: never;
185
+ options?: never;
186
+ head?: never;
187
+ /**
188
+ * Set one asset's approval state.
189
+ * @description Sets the asset's approval to one of the organization's approval states, with an optional note; each call replaces the previous approval. Works on an original or a variant. Needs an OAuth access token — an API key can read approval but not set it (403 APPROVAL_REQUIRES_USER). Setting approval needs a paid plan (403 PAID_PLAN_REQUIRED).
190
+ */
191
+ patch: operations["setAssetApproval"];
192
+ trace?: never;
193
+ };
194
+ "/organizations/{organizationId}/libraries/{libraryId}/assets/tag": {
195
+ parameters: {
196
+ query?: never;
197
+ header?: never;
198
+ path?: never;
199
+ cookie?: never;
567
200
  };
201
+ get?: never;
202
+ put?: never;
203
+ /**
204
+ * Apply up to 20 tags to up to 100 assets.
205
+ * @description Adds tags to assets in bulk. Tags already present are left alone, so the call is safe to repeat. Tags are how listAssets filters, and they feed searchAssets ranking.
206
+ */
207
+ post: operations["tagAssets"];
568
208
  delete?: never;
569
209
  options?: never;
570
210
  head?: never;
@@ -580,43 +220,11 @@ export interface paths {
580
220
  };
581
221
  get?: never;
582
222
  put?: never;
583
- /** Remove up to 20 tags from up to 100 assets. */
584
- post: {
585
- parameters: {
586
- query?: never;
587
- header: {
588
- "Api-Version": components["parameters"]["ApiVersion"];
589
- };
590
- path: {
591
- organizationId: components["parameters"]["OrganizationId"];
592
- libraryId: components["parameters"]["LibraryId"];
593
- };
594
- cookie?: never;
595
- };
596
- requestBody: {
597
- content: {
598
- "application/json": {
599
- assetIds: string[];
600
- tags: string[];
601
- };
602
- };
603
- };
604
- responses: {
605
- /** @description OK */
606
- 200: {
607
- headers: {
608
- [name: string]: unknown;
609
- };
610
- content: {
611
- "application/json": {
612
- data: {
613
- untaggedCount: number;
614
- };
615
- };
616
- };
617
- };
618
- };
619
- };
223
+ /**
224
+ * Remove up to 20 tags from up to 100 assets.
225
+ * @description Removes tags from assets in bulk. Tags that were not present are ignored, so the call is safe to repeat. Only the named tags are removed; every other tag on the asset stays.
226
+ */
227
+ post: operations["untagAssets"];
620
228
  delete?: never;
621
229
  options?: never;
622
230
  head?: never;
@@ -634,46 +242,9 @@ export interface paths {
634
242
  put?: never;
635
243
  /**
636
244
  * Move up to 100 assets to another library.
637
- * @description An asset's variants move with it; a variant cannot be transferred on its own — transfer its original and the variants follow.
245
+ * @description Moves assets from the library in the path to another library in the same organization. An asset's variants move with it; a variant cannot be transferred on its own — transfer its original and the variants follow. The credential needs write access to both libraries.
638
246
  */
639
- post: {
640
- parameters: {
641
- query?: never;
642
- header: {
643
- "Api-Version": components["parameters"]["ApiVersion"];
644
- };
645
- path: {
646
- organizationId: components["parameters"]["OrganizationId"];
647
- libraryId: components["parameters"]["LibraryId"];
648
- };
649
- cookie?: never;
650
- };
651
- requestBody: {
652
- content: {
653
- "application/json": {
654
- targetLibraryId: string;
655
- assetIds: string[];
656
- };
657
- };
658
- };
659
- responses: {
660
- /** @description OK */
661
- 200: {
662
- headers: {
663
- [name: string]: unknown;
664
- };
665
- content: {
666
- "application/json": {
667
- data: {
668
- transferredCount: number;
669
- sourceLibraryId: string;
670
- targetLibraryId: string;
671
- };
672
- };
673
- };
674
- };
675
- };
676
- };
247
+ post: operations["transferAssets"];
677
248
  delete?: never;
678
249
  options?: never;
679
250
  head?: never;
@@ -687,36 +258,11 @@ export interface paths {
687
258
  path?: never;
688
259
  cookie?: never;
689
260
  };
690
- /** List a library's tags by usage count. */
691
- get: {
692
- parameters: {
693
- query?: {
694
- limit?: number;
695
- };
696
- header: {
697
- "Api-Version": components["parameters"]["ApiVersion"];
698
- };
699
- path: {
700
- organizationId: components["parameters"]["OrganizationId"];
701
- libraryId: components["parameters"]["LibraryId"];
702
- };
703
- cookie?: never;
704
- };
705
- requestBody?: never;
706
- responses: {
707
- /** @description OK */
708
- 200: {
709
- headers: {
710
- [name: string]: unknown;
711
- };
712
- content: {
713
- "application/json": {
714
- data: components["schemas"]["Tag"][];
715
- };
716
- };
717
- };
718
- };
719
- };
261
+ /**
262
+ * List a library's tags by usage count.
263
+ * @description The library's tag vocabulary, most-used first. Read it before tagging so you reuse the team's existing tags instead of inventing near-duplicates, and to discover what a `tags` filter on listAssets can select.
264
+ */
265
+ get: operations["listTags"];
720
266
  put?: never;
721
267
  post?: never;
722
268
  delete?: never;
@@ -732,39 +278,11 @@ export interface paths {
732
278
  path?: never;
733
279
  cookie?: never;
734
280
  };
735
- /** Search assets across libraries (ranked, highlighted). */
736
- get: {
737
- parameters: {
738
- query: {
739
- q: string;
740
- /** @description Comma-separated library ids. */
741
- libraries?: string;
742
- page?: number;
743
- pageSize?: number;
744
- };
745
- header: {
746
- "Api-Version": components["parameters"]["ApiVersion"];
747
- };
748
- path: {
749
- organizationId: components["parameters"]["OrganizationId"];
750
- };
751
- cookie?: never;
752
- };
753
- requestBody?: never;
754
- responses: {
755
- /** @description OK */
756
- 200: {
757
- headers: {
758
- [name: string]: unknown;
759
- };
760
- content: {
761
- "application/json": {
762
- data: components["schemas"]["SearchResult"];
763
- };
764
- };
765
- };
766
- };
767
- };
281
+ /**
282
+ * Search assets across libraries (ranked, highlighted).
283
+ * @description Full-text, relevance-ranked search over filenames, descriptions, and tags across every library the credential can reach, or the subset named in `libraries`. This is the right call for a natural-language request such as "the photo of the blue packaging" — use listAssets when you already know the exact tag to filter on.
284
+ */
285
+ get: operations["searchAssets"];
768
286
  put?: never;
769
287
  post?: never;
770
288
  delete?: never;
@@ -853,10 +371,9 @@ export interface components {
853
371
  */
854
372
  variants: (components["schemas"]["AssetVariant"] | null)[] | null;
855
373
  /**
856
- * @description The parentId-model discriminator: `null` on a top-level original, the parent
857
- * asset's id on a variant. A variant is a first-class Asset — tag-filtered and search
858
- * queries return it as its own entry — and `parentId` relates it back to its
859
- * original. May be `null` for originals uploaded before the delta-001 backfill.
374
+ * @description `null` on a top-level original, the parent asset's id on a variant. A variant
375
+ * is a first-class Asset — tag-filtered and search queries return it as its own
376
+ * entry — and `parentId` relates it back to its original.
860
377
  */
861
378
  parentId: string | null;
862
379
  description: string | null;
@@ -869,7 +386,7 @@ export interface components {
869
386
  /** @description File size in bytes. May be `null` for older assets with no recorded size. */
870
387
  size: number | null;
871
388
  /**
872
- * @description Length of the asset in seconds, for video and audio. `null` on images and on
389
+ * @description Length of the asset in seconds, for video. `null` on images and on
873
390
  * videos still being processed.
874
391
  */
875
392
  duration: number | null;
@@ -889,11 +406,10 @@ export interface components {
889
406
  /**
890
407
  * @description Counter bumped each time the asset's BYTES are replaced at an unchanged
891
408
  * url — a promoted variant, an edit re-save. Append it to any `url` or
892
- * `sizes` entry as `?v=` to render the current pixels: the same url keeps
893
- * serving the previous bytes to every cache that already holds it.
409
+ * `sizes` entry as `?v=` to render the current pixels.
894
410
  *
895
411
  * Null on an asset whose bytes have never been replaced — render the bare
896
- * url there, so those assets keep the cache entry they already have.
412
+ * url there.
897
413
  */
898
414
  contentVersion: number | null;
899
415
  /** @description Attribution metadata for the user who uploaded the asset. */
@@ -962,7 +478,7 @@ export interface components {
962
478
  /** @description An asset's approval (delivery) state — who set it, when, and why. */
963
479
  Approval: {
964
480
  state: string;
965
- /** @description Email address of the person who set the approval. `null` on a search hit, or when their account has no email address. */
481
+ /** @description Email address of the person who set the approval. `null` when their account has no email address. */
966
482
  setBy: string | null;
967
483
  setAt: number | null;
968
484
  note?: string;
@@ -1054,7 +570,7 @@ export interface components {
1054
570
  };
1055
571
  };
1056
572
  responses: {
1057
- /** @description Missing or invalid API key. */
573
+ /** @description Missing or invalid API key or access token. */
1058
574
  Unauthorized: {
1059
575
  headers: {
1060
576
  [name: string]: unknown;
@@ -1063,7 +579,16 @@ export interface components {
1063
579
  "application/json": components["schemas"]["Error"];
1064
580
  };
1065
581
  };
1066
- /** @description Resource not found, or the key is not authorized for it. */
582
+ /** @description The credential may not perform this operation, or the organization's plan does not allow it. A key without access to a library gets 404, not 403. */
583
+ Forbidden: {
584
+ headers: {
585
+ [name: string]: unknown;
586
+ };
587
+ content: {
588
+ "application/json": components["schemas"]["Error"];
589
+ };
590
+ };
591
+ /** @description Resource not found, or the credential is not authorized for it. */
1067
592
  NotFound: {
1068
593
  headers: {
1069
594
  [name: string]: unknown;
@@ -1081,6 +606,30 @@ export interface components {
1081
606
  "application/json": components["schemas"]["Error"];
1082
607
  };
1083
608
  };
609
+ /** @description Rate limit exceeded. Wait for the number of seconds in `Retry-After` before retrying. */
610
+ TooManyRequests: {
611
+ headers: {
612
+ /** @description Seconds to wait before retrying. */
613
+ "Retry-After"?: number;
614
+ /** @description Remaining quota for the active policy, e.g. `"key";r=0;t=17`. The legacy `RateLimit-Limit` / `-Remaining` / `-Reset` triplet is sent alongside it. */
615
+ RateLimit?: string;
616
+ /** @description The quota policy in force, e.g. `"key";q=600;w=60`. */
617
+ "RateLimit-Policy"?: string;
618
+ [name: string]: unknown;
619
+ };
620
+ content: {
621
+ "application/json": components["schemas"]["Error"];
622
+ };
623
+ };
624
+ /** @description Unexpected server fault (INTERNAL_SERVER_ERROR). Safe to retry an idempotent operation. */
625
+ ServerError: {
626
+ headers: {
627
+ [name: string]: unknown;
628
+ };
629
+ content: {
630
+ "application/json": components["schemas"]["Error"];
631
+ };
632
+ };
1084
633
  };
1085
634
  parameters: {
1086
635
  ApiVersion: string;
@@ -1093,4 +642,690 @@ export interface components {
1093
642
  pathItems: never;
1094
643
  }
1095
644
  export type $defs = Record<string, never>;
1096
- export type operations = Record<string, never>;
645
+ export interface operations {
646
+ getMe: {
647
+ parameters: {
648
+ query?: never;
649
+ header: {
650
+ "Api-Version": components["parameters"]["ApiVersion"];
651
+ };
652
+ path?: never;
653
+ cookie?: never;
654
+ };
655
+ requestBody?: never;
656
+ responses: {
657
+ /** @description OK */
658
+ 200: {
659
+ headers: {
660
+ [name: string]: unknown;
661
+ };
662
+ content: {
663
+ "application/json": {
664
+ data: components["schemas"]["Me"];
665
+ };
666
+ };
667
+ };
668
+ 400: components["responses"]["BadRequest"];
669
+ 401: components["responses"]["Unauthorized"];
670
+ 403: components["responses"]["Forbidden"];
671
+ 429: components["responses"]["TooManyRequests"];
672
+ 500: components["responses"]["ServerError"];
673
+ };
674
+ };
675
+ createEphemeralLibrary: {
676
+ parameters: {
677
+ query?: never;
678
+ header: {
679
+ "Api-Version": components["parameters"]["ApiVersion"];
680
+ };
681
+ path?: never;
682
+ cookie?: never;
683
+ };
684
+ requestBody: {
685
+ content: {
686
+ "application/json": {
687
+ /** Format: email */
688
+ email: string;
689
+ name?: string;
690
+ };
691
+ };
692
+ };
693
+ responses: {
694
+ /** @description OK */
695
+ 200: {
696
+ headers: {
697
+ [name: string]: unknown;
698
+ };
699
+ content: {
700
+ "application/json": {
701
+ data: {
702
+ organizationId: string;
703
+ libraryId: string;
704
+ apiKey: string;
705
+ /** Format: uri */
706
+ claimUrl: string;
707
+ /** Format: date-time */
708
+ expiresAt: string;
709
+ emailSent: boolean;
710
+ };
711
+ };
712
+ };
713
+ };
714
+ 400: components["responses"]["BadRequest"];
715
+ 500: components["responses"]["ServerError"];
716
+ };
717
+ };
718
+ listLibraries: {
719
+ parameters: {
720
+ query?: {
721
+ /** @description Zero-based page index. */
722
+ page?: number;
723
+ pageSize?: number;
724
+ };
725
+ header: {
726
+ "Api-Version": components["parameters"]["ApiVersion"];
727
+ };
728
+ path: {
729
+ organizationId: components["parameters"]["OrganizationId"];
730
+ };
731
+ cookie?: never;
732
+ };
733
+ requestBody?: never;
734
+ responses: {
735
+ /** @description OK */
736
+ 200: {
737
+ headers: {
738
+ [name: string]: unknown;
739
+ };
740
+ content: {
741
+ "application/json": {
742
+ data: components["schemas"]["Library"][];
743
+ };
744
+ };
745
+ };
746
+ 400: components["responses"]["BadRequest"];
747
+ 401: components["responses"]["Unauthorized"];
748
+ 403: components["responses"]["Forbidden"];
749
+ 404: components["responses"]["NotFound"];
750
+ 429: components["responses"]["TooManyRequests"];
751
+ 500: components["responses"]["ServerError"];
752
+ };
753
+ };
754
+ createLibrary: {
755
+ parameters: {
756
+ query?: never;
757
+ header: {
758
+ "Api-Version": components["parameters"]["ApiVersion"];
759
+ };
760
+ path: {
761
+ organizationId: components["parameters"]["OrganizationId"];
762
+ };
763
+ cookie?: never;
764
+ };
765
+ requestBody: {
766
+ content: {
767
+ "application/json": {
768
+ name: string;
769
+ slug?: string;
770
+ };
771
+ };
772
+ };
773
+ responses: {
774
+ /** @description Created */
775
+ 201: {
776
+ headers: {
777
+ [name: string]: unknown;
778
+ };
779
+ content: {
780
+ "application/json": {
781
+ data: components["schemas"]["Library"];
782
+ };
783
+ };
784
+ };
785
+ 400: components["responses"]["BadRequest"];
786
+ 401: components["responses"]["Unauthorized"];
787
+ 403: components["responses"]["Forbidden"];
788
+ 404: components["responses"]["NotFound"];
789
+ 429: components["responses"]["TooManyRequests"];
790
+ 500: components["responses"]["ServerError"];
791
+ };
792
+ };
793
+ renameLibrary: {
794
+ parameters: {
795
+ query?: never;
796
+ header: {
797
+ "Api-Version": components["parameters"]["ApiVersion"];
798
+ };
799
+ path: {
800
+ organizationId: components["parameters"]["OrganizationId"];
801
+ libraryId: components["parameters"]["LibraryId"];
802
+ };
803
+ cookie?: never;
804
+ };
805
+ requestBody: {
806
+ content: {
807
+ "application/json": {
808
+ name: string;
809
+ };
810
+ };
811
+ };
812
+ responses: {
813
+ /** @description OK */
814
+ 200: {
815
+ headers: {
816
+ [name: string]: unknown;
817
+ };
818
+ content: {
819
+ "application/json": {
820
+ data: components["schemas"]["Library"];
821
+ };
822
+ };
823
+ };
824
+ 400: components["responses"]["BadRequest"];
825
+ 401: components["responses"]["Unauthorized"];
826
+ 403: components["responses"]["Forbidden"];
827
+ 404: components["responses"]["NotFound"];
828
+ 429: components["responses"]["TooManyRequests"];
829
+ 500: components["responses"]["ServerError"];
830
+ };
831
+ };
832
+ listAssets: {
833
+ parameters: {
834
+ query?: {
835
+ page?: number;
836
+ pageSize?: number;
837
+ /** @description Comma-separated tag filter, up to 50. */
838
+ tags?: string;
839
+ };
840
+ header: {
841
+ "Api-Version": components["parameters"]["ApiVersion"];
842
+ };
843
+ path: {
844
+ organizationId: components["parameters"]["OrganizationId"];
845
+ libraryId: components["parameters"]["LibraryId"];
846
+ };
847
+ cookie?: never;
848
+ };
849
+ requestBody?: never;
850
+ responses: {
851
+ /** @description OK */
852
+ 200: {
853
+ headers: {
854
+ [name: string]: unknown;
855
+ };
856
+ content: {
857
+ "application/json": {
858
+ data: components["schemas"]["Asset"][];
859
+ };
860
+ };
861
+ };
862
+ 400: components["responses"]["BadRequest"];
863
+ 401: components["responses"]["Unauthorized"];
864
+ 403: components["responses"]["Forbidden"];
865
+ 404: components["responses"]["NotFound"];
866
+ 429: components["responses"]["TooManyRequests"];
867
+ 500: components["responses"]["ServerError"];
868
+ };
869
+ };
870
+ uploadAssets: {
871
+ parameters: {
872
+ query?: never;
873
+ header: {
874
+ "Api-Version": components["parameters"]["ApiVersion"];
875
+ };
876
+ path: {
877
+ organizationId: components["parameters"]["OrganizationId"];
878
+ libraryId: components["parameters"]["LibraryId"];
879
+ };
880
+ cookie?: never;
881
+ };
882
+ requestBody: {
883
+ content: {
884
+ "multipart/form-data": {
885
+ files: string[];
886
+ /** @description Attach the uploaded file as a variant of this asset. Send exactly one file with it. The asset must be an original in this library, of the same media kind as the file. */
887
+ parentId?: string;
888
+ };
889
+ };
890
+ };
891
+ responses: {
892
+ /** @description OK */
893
+ 200: {
894
+ headers: {
895
+ [name: string]: unknown;
896
+ };
897
+ content: {
898
+ "application/json": {
899
+ data: {
900
+ responseText: string;
901
+ assets: components["schemas"]["Asset"][];
902
+ };
903
+ };
904
+ };
905
+ };
906
+ 400: components["responses"]["BadRequest"];
907
+ 401: components["responses"]["Unauthorized"];
908
+ 403: components["responses"]["Forbidden"];
909
+ 404: components["responses"]["NotFound"];
910
+ 429: components["responses"]["TooManyRequests"];
911
+ 500: components["responses"]["ServerError"];
912
+ };
913
+ };
914
+ deleteAssets: {
915
+ parameters: {
916
+ query?: never;
917
+ header: {
918
+ "Api-Version": components["parameters"]["ApiVersion"];
919
+ };
920
+ path: {
921
+ organizationId: components["parameters"]["OrganizationId"];
922
+ libraryId: components["parameters"]["LibraryId"];
923
+ };
924
+ cookie?: never;
925
+ };
926
+ requestBody: {
927
+ content: {
928
+ "application/json": {
929
+ ids: string[];
930
+ };
931
+ };
932
+ };
933
+ responses: {
934
+ /** @description OK */
935
+ 200: {
936
+ headers: {
937
+ [name: string]: unknown;
938
+ };
939
+ content: {
940
+ "application/json": {
941
+ data: {
942
+ success: boolean;
943
+ message: string;
944
+ ids: string[];
945
+ };
946
+ };
947
+ };
948
+ };
949
+ 400: components["responses"]["BadRequest"];
950
+ 401: components["responses"]["Unauthorized"];
951
+ 403: components["responses"]["Forbidden"];
952
+ 404: components["responses"]["NotFound"];
953
+ 429: components["responses"]["TooManyRequests"];
954
+ 500: components["responses"]["ServerError"];
955
+ };
956
+ };
957
+ getAsset: {
958
+ parameters: {
959
+ query?: never;
960
+ header: {
961
+ "Api-Version": components["parameters"]["ApiVersion"];
962
+ };
963
+ path: {
964
+ organizationId: components["parameters"]["OrganizationId"];
965
+ libraryId: components["parameters"]["LibraryId"];
966
+ assetId: components["parameters"]["AssetId"];
967
+ };
968
+ cookie?: never;
969
+ };
970
+ requestBody?: never;
971
+ responses: {
972
+ /** @description OK */
973
+ 200: {
974
+ headers: {
975
+ [name: string]: unknown;
976
+ };
977
+ content: {
978
+ "application/json": {
979
+ data: components["schemas"]["Asset"];
980
+ };
981
+ };
982
+ };
983
+ 400: components["responses"]["BadRequest"];
984
+ 401: components["responses"]["Unauthorized"];
985
+ 403: components["responses"]["Forbidden"];
986
+ 404: components["responses"]["NotFound"];
987
+ 429: components["responses"]["TooManyRequests"];
988
+ 500: components["responses"]["ServerError"];
989
+ };
990
+ };
991
+ updateAssetDescription: {
992
+ parameters: {
993
+ query?: never;
994
+ header: {
995
+ "Api-Version": components["parameters"]["ApiVersion"];
996
+ };
997
+ path: {
998
+ organizationId: components["parameters"]["OrganizationId"];
999
+ libraryId: components["parameters"]["LibraryId"];
1000
+ assetId: components["parameters"]["AssetId"];
1001
+ };
1002
+ cookie?: never;
1003
+ };
1004
+ requestBody: {
1005
+ content: {
1006
+ "application/json": {
1007
+ description: string;
1008
+ };
1009
+ };
1010
+ };
1011
+ responses: {
1012
+ /** @description OK */
1013
+ 200: {
1014
+ headers: {
1015
+ [name: string]: unknown;
1016
+ };
1017
+ content: {
1018
+ "application/json": {
1019
+ data: {
1020
+ assetId: string;
1021
+ description: string;
1022
+ };
1023
+ };
1024
+ };
1025
+ };
1026
+ 400: components["responses"]["BadRequest"];
1027
+ 401: components["responses"]["Unauthorized"];
1028
+ 403: components["responses"]["Forbidden"];
1029
+ 404: components["responses"]["NotFound"];
1030
+ 429: components["responses"]["TooManyRequests"];
1031
+ 500: components["responses"]["ServerError"];
1032
+ };
1033
+ };
1034
+ promoteVariant: {
1035
+ parameters: {
1036
+ query?: never;
1037
+ header: {
1038
+ "Api-Version": components["parameters"]["ApiVersion"];
1039
+ };
1040
+ path: {
1041
+ organizationId: components["parameters"]["OrganizationId"];
1042
+ libraryId: components["parameters"]["LibraryId"];
1043
+ assetId: components["parameters"]["AssetId"];
1044
+ };
1045
+ cookie?: never;
1046
+ };
1047
+ requestBody: {
1048
+ content: {
1049
+ "application/json": {
1050
+ variantId: string;
1051
+ };
1052
+ };
1053
+ };
1054
+ responses: {
1055
+ /** @description OK */
1056
+ 200: {
1057
+ headers: {
1058
+ [name: string]: unknown;
1059
+ };
1060
+ content: {
1061
+ "application/json": {
1062
+ data: {
1063
+ assetId: string;
1064
+ promotedVariantId: string;
1065
+ demotedVariantId: string;
1066
+ };
1067
+ };
1068
+ };
1069
+ };
1070
+ 400: components["responses"]["BadRequest"];
1071
+ 401: components["responses"]["Unauthorized"];
1072
+ 403: components["responses"]["Forbidden"];
1073
+ 404: components["responses"]["NotFound"];
1074
+ 429: components["responses"]["TooManyRequests"];
1075
+ 500: components["responses"]["ServerError"];
1076
+ };
1077
+ };
1078
+ setAssetApproval: {
1079
+ parameters: {
1080
+ query?: never;
1081
+ header: {
1082
+ "Api-Version": components["parameters"]["ApiVersion"];
1083
+ };
1084
+ path: {
1085
+ organizationId: components["parameters"]["OrganizationId"];
1086
+ libraryId: components["parameters"]["LibraryId"];
1087
+ assetId: components["parameters"]["AssetId"];
1088
+ };
1089
+ cookie?: never;
1090
+ };
1091
+ requestBody: {
1092
+ content: {
1093
+ "application/json": {
1094
+ state: string;
1095
+ note?: string | null;
1096
+ };
1097
+ };
1098
+ };
1099
+ responses: {
1100
+ /** @description OK */
1101
+ 200: {
1102
+ headers: {
1103
+ [name: string]: unknown;
1104
+ };
1105
+ content: {
1106
+ "application/json": {
1107
+ data: {
1108
+ assetId: string;
1109
+ approval: {
1110
+ state: string;
1111
+ /** @description Email address of the person who set the approval. `null` when their account has no email address. */
1112
+ setBy: string | null;
1113
+ setAt: number;
1114
+ note?: string;
1115
+ };
1116
+ };
1117
+ };
1118
+ };
1119
+ };
1120
+ 400: components["responses"]["BadRequest"];
1121
+ 401: components["responses"]["Unauthorized"];
1122
+ 403: components["responses"]["Forbidden"];
1123
+ 404: components["responses"]["NotFound"];
1124
+ 429: components["responses"]["TooManyRequests"];
1125
+ 500: components["responses"]["ServerError"];
1126
+ };
1127
+ };
1128
+ tagAssets: {
1129
+ parameters: {
1130
+ query?: never;
1131
+ header: {
1132
+ "Api-Version": components["parameters"]["ApiVersion"];
1133
+ };
1134
+ path: {
1135
+ organizationId: components["parameters"]["OrganizationId"];
1136
+ libraryId: components["parameters"]["LibraryId"];
1137
+ };
1138
+ cookie?: never;
1139
+ };
1140
+ requestBody: {
1141
+ content: {
1142
+ "application/json": {
1143
+ assetIds: string[];
1144
+ tags: string[];
1145
+ };
1146
+ };
1147
+ };
1148
+ responses: {
1149
+ /** @description OK */
1150
+ 200: {
1151
+ headers: {
1152
+ [name: string]: unknown;
1153
+ };
1154
+ content: {
1155
+ "application/json": {
1156
+ data: {
1157
+ taggedCount: number;
1158
+ };
1159
+ };
1160
+ };
1161
+ };
1162
+ 400: components["responses"]["BadRequest"];
1163
+ 401: components["responses"]["Unauthorized"];
1164
+ 403: components["responses"]["Forbidden"];
1165
+ 404: components["responses"]["NotFound"];
1166
+ 429: components["responses"]["TooManyRequests"];
1167
+ 500: components["responses"]["ServerError"];
1168
+ };
1169
+ };
1170
+ untagAssets: {
1171
+ parameters: {
1172
+ query?: never;
1173
+ header: {
1174
+ "Api-Version": components["parameters"]["ApiVersion"];
1175
+ };
1176
+ path: {
1177
+ organizationId: components["parameters"]["OrganizationId"];
1178
+ libraryId: components["parameters"]["LibraryId"];
1179
+ };
1180
+ cookie?: never;
1181
+ };
1182
+ requestBody: {
1183
+ content: {
1184
+ "application/json": {
1185
+ assetIds: string[];
1186
+ tags: string[];
1187
+ };
1188
+ };
1189
+ };
1190
+ responses: {
1191
+ /** @description OK */
1192
+ 200: {
1193
+ headers: {
1194
+ [name: string]: unknown;
1195
+ };
1196
+ content: {
1197
+ "application/json": {
1198
+ data: {
1199
+ untaggedCount: number;
1200
+ };
1201
+ };
1202
+ };
1203
+ };
1204
+ 400: components["responses"]["BadRequest"];
1205
+ 401: components["responses"]["Unauthorized"];
1206
+ 403: components["responses"]["Forbidden"];
1207
+ 404: components["responses"]["NotFound"];
1208
+ 429: components["responses"]["TooManyRequests"];
1209
+ 500: components["responses"]["ServerError"];
1210
+ };
1211
+ };
1212
+ transferAssets: {
1213
+ parameters: {
1214
+ query?: never;
1215
+ header: {
1216
+ "Api-Version": components["parameters"]["ApiVersion"];
1217
+ };
1218
+ path: {
1219
+ organizationId: components["parameters"]["OrganizationId"];
1220
+ libraryId: components["parameters"]["LibraryId"];
1221
+ };
1222
+ cookie?: never;
1223
+ };
1224
+ requestBody: {
1225
+ content: {
1226
+ "application/json": {
1227
+ targetLibraryId: string;
1228
+ assetIds: string[];
1229
+ };
1230
+ };
1231
+ };
1232
+ responses: {
1233
+ /** @description OK */
1234
+ 200: {
1235
+ headers: {
1236
+ [name: string]: unknown;
1237
+ };
1238
+ content: {
1239
+ "application/json": {
1240
+ data: {
1241
+ transferredCount: number;
1242
+ sourceLibraryId: string;
1243
+ targetLibraryId: string;
1244
+ };
1245
+ };
1246
+ };
1247
+ };
1248
+ 400: components["responses"]["BadRequest"];
1249
+ 401: components["responses"]["Unauthorized"];
1250
+ 403: components["responses"]["Forbidden"];
1251
+ 404: components["responses"]["NotFound"];
1252
+ 429: components["responses"]["TooManyRequests"];
1253
+ 500: components["responses"]["ServerError"];
1254
+ };
1255
+ };
1256
+ listTags: {
1257
+ parameters: {
1258
+ query?: {
1259
+ limit?: number;
1260
+ };
1261
+ header: {
1262
+ "Api-Version": components["parameters"]["ApiVersion"];
1263
+ };
1264
+ path: {
1265
+ organizationId: components["parameters"]["OrganizationId"];
1266
+ libraryId: components["parameters"]["LibraryId"];
1267
+ };
1268
+ cookie?: never;
1269
+ };
1270
+ requestBody?: never;
1271
+ responses: {
1272
+ /** @description OK */
1273
+ 200: {
1274
+ headers: {
1275
+ [name: string]: unknown;
1276
+ };
1277
+ content: {
1278
+ "application/json": {
1279
+ data: components["schemas"]["Tag"][];
1280
+ };
1281
+ };
1282
+ };
1283
+ 400: components["responses"]["BadRequest"];
1284
+ 401: components["responses"]["Unauthorized"];
1285
+ 403: components["responses"]["Forbidden"];
1286
+ 404: components["responses"]["NotFound"];
1287
+ 429: components["responses"]["TooManyRequests"];
1288
+ 500: components["responses"]["ServerError"];
1289
+ };
1290
+ };
1291
+ searchAssets: {
1292
+ parameters: {
1293
+ query: {
1294
+ q: string;
1295
+ /** @description Comma-separated library ids. */
1296
+ libraries?: string;
1297
+ page?: number;
1298
+ pageSize?: number;
1299
+ /** @description Only assets in this approval state; `none` matches assets with no approval. */
1300
+ approval?: "in_review" | "approved" | "needs_changes" | "none";
1301
+ };
1302
+ header: {
1303
+ "Api-Version": components["parameters"]["ApiVersion"];
1304
+ };
1305
+ path: {
1306
+ organizationId: components["parameters"]["OrganizationId"];
1307
+ };
1308
+ cookie?: never;
1309
+ };
1310
+ requestBody?: never;
1311
+ responses: {
1312
+ /** @description OK */
1313
+ 200: {
1314
+ headers: {
1315
+ [name: string]: unknown;
1316
+ };
1317
+ content: {
1318
+ "application/json": {
1319
+ data: components["schemas"]["SearchResult"];
1320
+ };
1321
+ };
1322
+ };
1323
+ 400: components["responses"]["BadRequest"];
1324
+ 401: components["responses"]["Unauthorized"];
1325
+ 403: components["responses"]["Forbidden"];
1326
+ 404: components["responses"]["NotFound"];
1327
+ 429: components["responses"]["TooManyRequests"];
1328
+ 500: components["responses"]["ServerError"];
1329
+ };
1330
+ };
1331
+ }