@seta-labs/proxy 0.0.0-stage → 0.1.0-next.1

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.
@@ -0,0 +1,2031 @@
1
+ /**
2
+ * This file was auto-generated by openapi-typescript.
3
+ * Do not make direct changes to the file.
4
+ */
5
+ interface paths {
6
+ '/health': {
7
+ parameters: {
8
+ query?: never;
9
+ header?: never;
10
+ path?: never;
11
+ cookie?: never;
12
+ };
13
+ /** Liveness: the process answers; no dependency is checked */
14
+ get: operations['HealthController_live'];
15
+ put?: never;
16
+ post?: never;
17
+ delete?: never;
18
+ options?: never;
19
+ head?: never;
20
+ patch?: never;
21
+ trace?: never;
22
+ };
23
+ '/health/ready': {
24
+ parameters: {
25
+ query?: never;
26
+ header?: never;
27
+ path?: never;
28
+ cookie?: never;
29
+ };
30
+ /** Readiness: memory pressure and critical dependencies */
31
+ get: operations['HealthController_ready'];
32
+ put?: never;
33
+ post?: never;
34
+ delete?: never;
35
+ options?: never;
36
+ head?: never;
37
+ patch?: never;
38
+ trace?: never;
39
+ };
40
+ '/health/status': {
41
+ parameters: {
42
+ query?: never;
43
+ header?: never;
44
+ path?: never;
45
+ cookie?: never;
46
+ };
47
+ /** Diagnostics: memory, event loop delay, every check with its error */
48
+ get: operations['HealthController_status'];
49
+ put?: never;
50
+ post?: never;
51
+ delete?: never;
52
+ options?: never;
53
+ head?: never;
54
+ patch?: never;
55
+ trace?: never;
56
+ };
57
+ '/leases': {
58
+ parameters: {
59
+ query?: never;
60
+ header?: never;
61
+ path?: never;
62
+ cookie?: never;
63
+ };
64
+ get?: never;
65
+ put?: never;
66
+ post: operations['LeaseController_create'];
67
+ delete?: never;
68
+ options?: never;
69
+ head?: never;
70
+ patch?: never;
71
+ trace?: never;
72
+ };
73
+ '/leases/{id}': {
74
+ parameters: {
75
+ query?: never;
76
+ header?: never;
77
+ path?: never;
78
+ cookie?: never;
79
+ };
80
+ get: operations['LeaseController_get'];
81
+ put?: never;
82
+ post?: never;
83
+ delete: operations['LeaseController_release'];
84
+ options?: never;
85
+ head?: never;
86
+ patch: operations['LeaseController_renew'];
87
+ trace?: never;
88
+ };
89
+ '/leases/{id}/report': {
90
+ parameters: {
91
+ query?: never;
92
+ header?: never;
93
+ path?: never;
94
+ cookie?: never;
95
+ };
96
+ get?: never;
97
+ put?: never;
98
+ post: operations['LeaseController_report'];
99
+ delete?: never;
100
+ options?: never;
101
+ head?: never;
102
+ patch?: never;
103
+ trace?: never;
104
+ };
105
+ '/proxies/api-keys': {
106
+ parameters: {
107
+ query?: never;
108
+ header?: never;
109
+ path?: never;
110
+ cookie?: never;
111
+ };
112
+ get: operations['ApiKeysController_list'];
113
+ put?: never;
114
+ post: operations['ApiKeysController_issue'];
115
+ delete?: never;
116
+ options?: never;
117
+ head?: never;
118
+ patch?: never;
119
+ trace?: never;
120
+ };
121
+ '/proxies/api-keys/{id}': {
122
+ parameters: {
123
+ query?: never;
124
+ header?: never;
125
+ path?: never;
126
+ cookie?: never;
127
+ };
128
+ get?: never;
129
+ put?: never;
130
+ post?: never;
131
+ delete: operations['ApiKeysController_revoke'];
132
+ options?: never;
133
+ head?: never;
134
+ patch?: never;
135
+ trace?: never;
136
+ };
137
+ '/proxies/endpoints': {
138
+ parameters: {
139
+ query?: never;
140
+ header?: never;
141
+ path?: never;
142
+ cookie?: never;
143
+ };
144
+ get: operations['ProxiesController_listEndpoints'];
145
+ put?: never;
146
+ post?: never;
147
+ delete?: never;
148
+ options?: never;
149
+ head?: never;
150
+ patch?: never;
151
+ trace?: never;
152
+ };
153
+ '/proxies/providers': {
154
+ parameters: {
155
+ query?: never;
156
+ header?: never;
157
+ path?: never;
158
+ cookie?: never;
159
+ };
160
+ get: operations['ProxiesController_listProviderAccounts'];
161
+ put?: never;
162
+ post: operations['ProxiesController_createProviderAccount'];
163
+ delete?: never;
164
+ options?: never;
165
+ head?: never;
166
+ patch?: never;
167
+ trace?: never;
168
+ };
169
+ '/proxies/providers/{id}': {
170
+ parameters: {
171
+ query?: never;
172
+ header?: never;
173
+ path?: never;
174
+ cookie?: never;
175
+ };
176
+ get: operations['ProxiesController_getProviderAccount'];
177
+ put?: never;
178
+ post?: never;
179
+ delete?: never;
180
+ options?: never;
181
+ head?: never;
182
+ patch: operations['ProxiesController_updateProviderAccount'];
183
+ trace?: never;
184
+ };
185
+ '/proxies/providers/{id}/pause': {
186
+ parameters: {
187
+ query?: never;
188
+ header?: never;
189
+ path?: never;
190
+ cookie?: never;
191
+ };
192
+ get?: never;
193
+ put?: never;
194
+ post: operations['ProxiesController_pauseProviderAccount'];
195
+ delete?: never;
196
+ options?: never;
197
+ head?: never;
198
+ patch?: never;
199
+ trace?: never;
200
+ };
201
+ '/proxies/providers/{id}/resume': {
202
+ parameters: {
203
+ query?: never;
204
+ header?: never;
205
+ path?: never;
206
+ cookie?: never;
207
+ };
208
+ get?: never;
209
+ put?: never;
210
+ post: operations['ProxiesController_resumeProviderAccount'];
211
+ delete?: never;
212
+ options?: never;
213
+ head?: never;
214
+ patch?: never;
215
+ trace?: never;
216
+ };
217
+ '/proxies/providers/{id}/disconnect': {
218
+ parameters: {
219
+ query?: never;
220
+ header?: never;
221
+ path?: never;
222
+ cookie?: never;
223
+ };
224
+ get?: never;
225
+ put?: never;
226
+ post: operations['ProxiesController_disconnectProviderAccount'];
227
+ delete?: never;
228
+ options?: never;
229
+ head?: never;
230
+ patch?: never;
231
+ trace?: never;
232
+ };
233
+ '/proxies/providers/{id}/resources': {
234
+ parameters: {
235
+ query?: never;
236
+ header?: never;
237
+ path?: never;
238
+ cookie?: never;
239
+ };
240
+ get: operations['ProxiesController_listProviderResources'];
241
+ put?: never;
242
+ post?: never;
243
+ delete?: never;
244
+ options?: never;
245
+ head?: never;
246
+ patch?: never;
247
+ trace?: never;
248
+ };
249
+ '/proxies/providers/{id}/runs': {
250
+ parameters: {
251
+ query?: never;
252
+ header?: never;
253
+ path?: never;
254
+ cookie?: never;
255
+ };
256
+ get: operations['ProxiesController_listProviderSyncRuns'];
257
+ put?: never;
258
+ post?: never;
259
+ delete?: never;
260
+ options?: never;
261
+ head?: never;
262
+ patch?: never;
263
+ trace?: never;
264
+ };
265
+ '/proxies/providers/{id}/test': {
266
+ parameters: {
267
+ query?: never;
268
+ header?: never;
269
+ path?: never;
270
+ cookie?: never;
271
+ };
272
+ get?: never;
273
+ put?: never;
274
+ post: operations['ProxiesController_testProviderAccount'];
275
+ delete?: never;
276
+ options?: never;
277
+ head?: never;
278
+ patch?: never;
279
+ trace?: never;
280
+ };
281
+ '/proxies/providers/{id}/sync': {
282
+ parameters: {
283
+ query?: never;
284
+ header?: never;
285
+ path?: never;
286
+ cookie?: never;
287
+ };
288
+ get?: never;
289
+ put?: never;
290
+ post: operations['ProxiesController_syncProviderAccount'];
291
+ delete?: never;
292
+ options?: never;
293
+ head?: never;
294
+ patch?: never;
295
+ trace?: never;
296
+ };
297
+ '/proxies/endpoints/{id}': {
298
+ parameters: {
299
+ query?: never;
300
+ header?: never;
301
+ path?: never;
302
+ cookie?: never;
303
+ };
304
+ get?: never;
305
+ put?: never;
306
+ post?: never;
307
+ delete?: never;
308
+ options?: never;
309
+ head?: never;
310
+ patch: operations['ProxiesController_updateEndpoint'];
311
+ trace?: never;
312
+ };
313
+ '/proxies/endpoints/{id}/check': {
314
+ parameters: {
315
+ query?: never;
316
+ header?: never;
317
+ path?: never;
318
+ cookie?: never;
319
+ };
320
+ get?: never;
321
+ put?: never;
322
+ post: operations['ProxiesController_checkEndpoint'];
323
+ delete?: never;
324
+ options?: never;
325
+ head?: never;
326
+ patch?: never;
327
+ trace?: never;
328
+ };
329
+ '/proxies/endpoints/check-all': {
330
+ parameters: {
331
+ query?: never;
332
+ header?: never;
333
+ path?: never;
334
+ cookie?: never;
335
+ };
336
+ get?: never;
337
+ put?: never;
338
+ post: operations['ProxiesController_checkAllEndpoints'];
339
+ delete?: never;
340
+ options?: never;
341
+ head?: never;
342
+ patch?: never;
343
+ trace?: never;
344
+ };
345
+ '/proxies/gateways': {
346
+ parameters: {
347
+ query?: never;
348
+ header?: never;
349
+ path?: never;
350
+ cookie?: never;
351
+ };
352
+ get: operations['ProxiesController_listGateways'];
353
+ put?: never;
354
+ post: operations['ProxiesController_createGateway'];
355
+ delete?: never;
356
+ options?: never;
357
+ head?: never;
358
+ patch?: never;
359
+ trace?: never;
360
+ };
361
+ '/proxies/gateways/{id}': {
362
+ parameters: {
363
+ query?: never;
364
+ header?: never;
365
+ path?: never;
366
+ cookie?: never;
367
+ };
368
+ get?: never;
369
+ put?: never;
370
+ post?: never;
371
+ delete: operations['ProxiesController_removeGateway'];
372
+ options?: never;
373
+ head?: never;
374
+ patch: operations['ProxiesController_updateGateway'];
375
+ trace?: never;
376
+ };
377
+ '/proxies/gateways/{id}/members': {
378
+ parameters: {
379
+ query?: never;
380
+ header?: never;
381
+ path?: never;
382
+ cookie?: never;
383
+ };
384
+ get?: never;
385
+ put?: never;
386
+ post: operations['ProxiesController_addMember'];
387
+ delete?: never;
388
+ options?: never;
389
+ head?: never;
390
+ patch?: never;
391
+ trace?: never;
392
+ };
393
+ '/proxies/gateways/{id}/members/{endpointId}': {
394
+ parameters: {
395
+ query?: never;
396
+ header?: never;
397
+ path?: never;
398
+ cookie?: never;
399
+ };
400
+ get?: never;
401
+ put?: never;
402
+ post?: never;
403
+ delete: operations['ProxiesController_removeMember'];
404
+ options?: never;
405
+ head?: never;
406
+ patch?: never;
407
+ trace?: never;
408
+ };
409
+ '/proxies/playground/config': {
410
+ parameters: {
411
+ query?: never;
412
+ header?: never;
413
+ path?: never;
414
+ cookie?: never;
415
+ };
416
+ get?: never;
417
+ put?: never;
418
+ post: operations['ProxiesController_playgroundConfig'];
419
+ delete?: never;
420
+ options?: never;
421
+ head?: never;
422
+ patch?: never;
423
+ trace?: never;
424
+ };
425
+ '/proxies/playground/run': {
426
+ parameters: {
427
+ query?: never;
428
+ header?: never;
429
+ path?: never;
430
+ cookie?: never;
431
+ };
432
+ get?: never;
433
+ put?: never;
434
+ post: operations['ProxiesController_playgroundRun'];
435
+ delete?: never;
436
+ options?: never;
437
+ head?: never;
438
+ patch?: never;
439
+ trace?: never;
440
+ };
441
+ '/proxies/bans': {
442
+ parameters: {
443
+ query?: never;
444
+ header?: never;
445
+ path?: never;
446
+ cookie?: never;
447
+ };
448
+ get: operations['ProxiesController_listBans'];
449
+ put?: never;
450
+ post?: never;
451
+ delete?: never;
452
+ options?: never;
453
+ head?: never;
454
+ patch?: never;
455
+ trace?: never;
456
+ };
457
+ '/proxies/bans/by-endpoint': {
458
+ parameters: {
459
+ query?: never;
460
+ header?: never;
461
+ path?: never;
462
+ cookie?: never;
463
+ };
464
+ get: operations['ProxiesController_summarizeBans'];
465
+ put?: never;
466
+ post?: never;
467
+ delete?: never;
468
+ options?: never;
469
+ head?: never;
470
+ patch?: never;
471
+ trace?: never;
472
+ };
473
+ '/proxies/report': {
474
+ parameters: {
475
+ query?: never;
476
+ header?: never;
477
+ path?: never;
478
+ cookie?: never;
479
+ };
480
+ get?: never;
481
+ put?: never;
482
+ post: operations['ProxiesController_report'];
483
+ delete?: never;
484
+ options?: never;
485
+ head?: never;
486
+ patch?: never;
487
+ trace?: never;
488
+ };
489
+ '/proxies/sync/iproyal': {
490
+ parameters: {
491
+ query?: never;
492
+ header?: never;
493
+ path?: never;
494
+ cookie?: never;
495
+ };
496
+ get?: never;
497
+ put?: never;
498
+ post: operations['ProxiesController_syncIproyal'];
499
+ delete?: never;
500
+ options?: never;
501
+ head?: never;
502
+ patch?: never;
503
+ trace?: never;
504
+ };
505
+ '/proxies/stats': {
506
+ parameters: {
507
+ query?: never;
508
+ header?: never;
509
+ path?: never;
510
+ cookie?: never;
511
+ };
512
+ get: operations['ProxiesController_stats'];
513
+ put?: never;
514
+ post?: never;
515
+ delete?: never;
516
+ options?: never;
517
+ head?: never;
518
+ patch?: never;
519
+ trace?: never;
520
+ };
521
+ '/proxies/refresh': {
522
+ parameters: {
523
+ query?: never;
524
+ header?: never;
525
+ path?: never;
526
+ cookie?: never;
527
+ };
528
+ get?: never;
529
+ put?: never;
530
+ post: operations['ProxiesController_refresh'];
531
+ delete?: never;
532
+ options?: never;
533
+ head?: never;
534
+ patch?: never;
535
+ trace?: never;
536
+ };
537
+ '/gateways': {
538
+ parameters: {
539
+ query?: never;
540
+ header?: never;
541
+ path?: never;
542
+ cookie?: never;
543
+ };
544
+ get: operations['CatalogController_list'];
545
+ put?: never;
546
+ post?: never;
547
+ delete?: never;
548
+ options?: never;
549
+ head?: never;
550
+ patch?: never;
551
+ trace?: never;
552
+ };
553
+ }
554
+ interface components {
555
+ schemas: {
556
+ /** @enum {string} */
557
+ HealthStatus: 'ok' | 'degraded' | 'down';
558
+ HealthCheckResultDto: {
559
+ /** @example database */
560
+ name: string;
561
+ /**
562
+ * @description A check is `ok` or `down`.
563
+ * @example ok
564
+ */
565
+ status: components['schemas']['HealthStatus'];
566
+ /** @description A failing critical check fails readiness. */
567
+ critical: boolean;
568
+ /** @example 3.2 */
569
+ durationMs: number;
570
+ /**
571
+ * @description Failure reason, only in `/health/status`: probes are public.
572
+ * @example timed out after 750 ms
573
+ */
574
+ error?: string;
575
+ };
576
+ HealthCheckResponseDto: {
577
+ /** @example ok */
578
+ status: components['schemas']['HealthStatus'];
579
+ /** @example api */
580
+ service: string;
581
+ /**
582
+ * Format: date-time
583
+ * @example 2026-07-03T10:00:00.000Z
584
+ */
585
+ timestamp: string;
586
+ /** @description Readiness checks; absent on liveness. */
587
+ checks?: components['schemas']['HealthCheckResultDto'][];
588
+ };
589
+ MemoryUsageDto: {
590
+ /** @example 182.4 */
591
+ rssMiB: number;
592
+ /** @example 96.1 */
593
+ heapUsedMiB: number;
594
+ /** @example 120.5 */
595
+ heapTotalMiB: number;
596
+ /** @example 4.2 */
597
+ externalMiB: number;
598
+ /** @example 1.3 */
599
+ arrayBuffersMiB: number;
600
+ /**
601
+ * @description V8 `heap_size_limit`.
602
+ * @example 259
603
+ */
604
+ heapLimitMiB: number;
605
+ /**
606
+ * @description cgroup memory limit, `null` when unconstrained.
607
+ * @example 512
608
+ */
609
+ containerLimitMiB: number | null;
610
+ /**
611
+ * @description `heapUsed / heapLimit`.
612
+ * @example 0.371
613
+ */
614
+ heapRatio: number;
615
+ /**
616
+ * @description `rss / containerLimit`, `null` when unconstrained.
617
+ * @example 0.356
618
+ */
619
+ rssRatio: number | null;
620
+ };
621
+ EventLoopDelayDto: {
622
+ /** @example 10.1 */
623
+ p50Ms: number;
624
+ /** @example 21.4 */
625
+ p99Ms: number;
626
+ /** @example 48.7 */
627
+ maxMs: number;
628
+ /**
629
+ * @description Seconds covered: since the previous status report, or since startup.
630
+ * @example 60
631
+ */
632
+ windowSec: number;
633
+ };
634
+ HealthReportResponseDto: {
635
+ /** @example ok */
636
+ status: components['schemas']['HealthStatus'];
637
+ /** @example api */
638
+ service: string;
639
+ /** @example v0.4.2 */
640
+ version?: string;
641
+ /** @example v22.23.2 */
642
+ node: string;
643
+ /** @example 3600 */
644
+ uptimeSec: number;
645
+ /**
646
+ * Format: date-time
647
+ * @example 2026-07-03T10:00:00.000Z
648
+ */
649
+ timestamp: string;
650
+ memory: components['schemas']['MemoryUsageDto'];
651
+ eventLoop: components['schemas']['EventLoopDelayDto'];
652
+ checks: components['schemas']['HealthCheckResultDto'][];
653
+ };
654
+ CreateLeaseDto: {
655
+ gateway: string;
656
+ targetHost: string;
657
+ endpointId?: string;
658
+ };
659
+ LeaseDto: {
660
+ exitIp: string | null;
661
+ id: string;
662
+ /** @description Application of the key that holds the lease */
663
+ apiKey: string;
664
+ gateway: string;
665
+ endpointId: string;
666
+ endpointName: string;
667
+ host: string;
668
+ targetHost: string;
669
+ expiresAt: string;
670
+ state: string;
671
+ };
672
+ ReportLeaseDto: {
673
+ reason: string;
674
+ };
675
+ ApiKeyDto: {
676
+ id: string;
677
+ name: string;
678
+ /** @description Last four characters, to tell keys apart */
679
+ lastFour: string;
680
+ enabled: boolean;
681
+ /** Format: date-time */
682
+ lastUsedAt: string | null;
683
+ /** Format: date-time */
684
+ createdAt: string;
685
+ };
686
+ CreateApiKeyDto: {
687
+ /** @example seta-immo */
688
+ name: string;
689
+ };
690
+ IssuedApiKeyDto: {
691
+ id: string;
692
+ name: string;
693
+ /** @description Last four characters, to tell keys apart */
694
+ lastFour: string;
695
+ enabled: boolean;
696
+ /** Format: date-time */
697
+ lastUsedAt: string | null;
698
+ /** Format: date-time */
699
+ createdAt: string;
700
+ /** @description Shown once: store it in the application secret */
701
+ key: string;
702
+ };
703
+ ProxyCooldownDto: {
704
+ targetHost: string;
705
+ /** Format: date-time */
706
+ expiresAt: string;
707
+ };
708
+ ProxyEndpointDto: {
709
+ lease: components['schemas']['LeaseDto'] | null;
710
+ id: string;
711
+ /** @example IPR IT 01 */
712
+ name: string;
713
+ /** @example STATIC */
714
+ kind: string;
715
+ /** @example ACTIVE */
716
+ status: string;
717
+ /** @example 203.0.113.10 */
718
+ host: string;
719
+ /** @example 12323 */
720
+ port: number;
721
+ /** @example IT */
722
+ country: string | null;
723
+ /**
724
+ * @description Autonomous system of the exit, observed by the last successful check
725
+ * @example 212384
726
+ */
727
+ asn: number | null;
728
+ /** @example Simoresta UAB */
729
+ asnOrg: string | null;
730
+ /** @example iproyal */
731
+ provider: string | null;
732
+ providerAccountId: string | null;
733
+ providerAccountName: string | null;
734
+ category: string | null;
735
+ /** Format: date-time */
736
+ expiresAt: string | null;
737
+ /** @example Milano */
738
+ city: string | null;
739
+ /** @description Slugs of the gateways this endpoint belongs to */
740
+ gateways: string[];
741
+ /** @description Target hosts currently penalising this endpoint */
742
+ activeBans: number;
743
+ cooldowns: components['schemas']['ProxyCooldownDto'][];
744
+ /** Format: date-time */
745
+ lastCheckedAt: string | null;
746
+ lastCheckOk: boolean | null;
747
+ /** @description Address the target saw on the last check — proof of where this exit routes */
748
+ lastExitIp: string | null;
749
+ lastLatencyMs: number | null;
750
+ };
751
+ ProviderAccountDto: {
752
+ id: string;
753
+ /** @enum {string} */
754
+ provider: 'IPROYAL' | 'OXYLABS' | 'DECODO' | 'WEBSHARE';
755
+ name: string;
756
+ status: string;
757
+ productScopes: ('RESIDENTIAL' | 'ISP' | 'DATACENTER' | 'MOBILE')[];
758
+ configured: boolean;
759
+ credentialsLastFour: string | null;
760
+ lastSuccessAt: string | null;
761
+ lastError: string | null;
762
+ createdAt: string;
763
+ updatedAt: string;
764
+ };
765
+ CreateProviderAccountDto: {
766
+ /** @enum {string} */
767
+ provider: 'IPROYAL' | 'OXYLABS' | 'DECODO' | 'WEBSHARE';
768
+ name: string;
769
+ productScopes?: ('RESIDENTIAL' | 'ISP' | 'DATACENTER' | 'MOBILE')[];
770
+ credentials?: {
771
+ [key: string]: string | number;
772
+ };
773
+ };
774
+ UpdateProviderAccountDto: {
775
+ name?: string;
776
+ productScopes?: ('RESIDENTIAL' | 'ISP' | 'DATACENTER' | 'MOBILE')[];
777
+ /** @description Omit to retain credentials. `clearCredentials: true` explicitly removes them. */
778
+ credentials?: {
779
+ [key: string]: string | number;
780
+ };
781
+ clearCredentials?: boolean;
782
+ };
783
+ ProviderResourceDto: {
784
+ id: string;
785
+ /** @enum {string} */
786
+ category: 'RESIDENTIAL' | 'ISP' | 'DATACENTER' | 'MOBILE';
787
+ source: string;
788
+ externalId: string;
789
+ name: string;
790
+ status: string | null;
791
+ endpointCount: number;
792
+ expiresAt: string | null;
793
+ trafficUsedBytes: string | null;
794
+ trafficLimitBytes: string | null;
795
+ observedAt: string;
796
+ };
797
+ ProviderSyncRunDto: {
798
+ id: string;
799
+ status: string;
800
+ preview: boolean;
801
+ sources: {
802
+ [key: string]: {
803
+ status: string;
804
+ resources: number;
805
+ endpoints: number;
806
+ error: string | null;
807
+ };
808
+ };
809
+ summary: {
810
+ [key: string]: unknown;
811
+ };
812
+ error: string | null;
813
+ startedAt: string;
814
+ finishedAt: string | null;
815
+ };
816
+ ProviderSyncResultDto: {
817
+ status: string;
818
+ preview: boolean;
819
+ resources: number;
820
+ endpoints: number;
821
+ sources: {
822
+ [key: string]: {
823
+ status: string;
824
+ resources: number;
825
+ endpoints: number;
826
+ error: string | null;
827
+ };
828
+ };
829
+ error: string | null;
830
+ created?: number;
831
+ updated?: number;
832
+ expired?: number;
833
+ };
834
+ SyncProviderAccountDto: {
835
+ preview?: boolean;
836
+ };
837
+ UpdateEndpointDto: {
838
+ /** @example IPR IT 01 */
839
+ name?: string;
840
+ /**
841
+ * @description Withhold an exit from routing or put it back. EXPIRED is set by the provider sync, not here.
842
+ * @enum {string}
843
+ */
844
+ status?: 'ACTIVE' | 'DISABLED';
845
+ /**
846
+ * @description ISO 3166-1 alpha-2
847
+ * @example IT
848
+ */
849
+ country?: string;
850
+ };
851
+ EndpointCheckResultDto: {
852
+ endpointId: string;
853
+ name: string;
854
+ ok: boolean;
855
+ connectMs: number | null;
856
+ totalMs: number;
857
+ exitIp?: string;
858
+ country?: string | null;
859
+ city?: string | null;
860
+ asn?: number | null;
861
+ asnOrg?: string | null;
862
+ error?: string;
863
+ };
864
+ ProxyGatewayDto: {
865
+ id: string;
866
+ /** @example portali-aste */
867
+ slug: string;
868
+ /** @example Portali aste */
869
+ name: string;
870
+ /** @example LEAST_RECENTLY_BANNED */
871
+ strategy: string;
872
+ /** @example IT */
873
+ countryFilter: string | null;
874
+ enabled: boolean;
875
+ /** @description Endpoints currently eligible for routing */
876
+ routableEndpoints: number;
877
+ };
878
+ CreateGatewayDto: {
879
+ /**
880
+ * @description Stable identifier applications name (lease `gateway`, relay `gateway-<slug>`); lowercase, dash-separated
881
+ * @example portali-aste
882
+ */
883
+ slug: string;
884
+ /** @example Portali aste */
885
+ name: string;
886
+ description?: string;
887
+ /**
888
+ * @description How an exit is picked per tunnel. LEAST_RECENTLY_BANNED prefers the one whose penalty on the requested target is oldest.
889
+ * @enum {string}
890
+ */
891
+ strategy?: 'ROUND_ROBIN' | 'LEAST_RECENTLY_BANNED';
892
+ /**
893
+ * @description Restrict routing to exits of this country (ISO 3166-1 alpha-2)
894
+ * @example IT
895
+ */
896
+ countryFilter?: string;
897
+ };
898
+ UpdateGatewayDto: {
899
+ /** @description Rename the identifier. Applications name the gateway by slug in leases and relay usernames: every one using it must be updated with it. */
900
+ slug?: string;
901
+ name?: string;
902
+ description?: string;
903
+ /** @enum {string} */
904
+ strategy?: 'ROUND_ROBIN' | 'LEAST_RECENTLY_BANNED';
905
+ /** @example IT */
906
+ countryFilter?: string;
907
+ enabled?: boolean;
908
+ };
909
+ GatewayMemberDto: {
910
+ /** @description Endpoint to enrol or withdraw */
911
+ endpointId: string;
912
+ };
913
+ PlaygroundConfigRequestDto: {
914
+ /** @description Send straight through this purchased exit */
915
+ endpointId?: string;
916
+ /** @description Send through the relay, on this gateway */
917
+ gateway?: string;
918
+ /**
919
+ * @description URL the generated command targets; defaults to an address echo service
920
+ * @example https://example.com
921
+ */
922
+ targetUrl?: string;
923
+ };
924
+ PlaygroundConfigDto: {
925
+ route: string;
926
+ /** @enum {string} */
927
+ rotation: 'fixed' | 'rotating' | 'sticky';
928
+ /** @description Proxy URL with credentials */
929
+ proxyUrl: string;
930
+ /** @description Same URL with the secret hidden */
931
+ proxyUrlMasked: string;
932
+ curl: string;
933
+ env: {
934
+ [key: string]: string;
935
+ };
936
+ };
937
+ PlaygroundRunRequestDto: {
938
+ /** @description Send straight through this purchased exit */
939
+ endpointId?: string;
940
+ /** @description Send through the relay, on this gateway */
941
+ gateway?: string;
942
+ /**
943
+ * @description URL the generated command targets; defaults to an address echo service
944
+ * @example https://example.com
945
+ */
946
+ targetUrl?: string;
947
+ /** @description On a gateway, pin the tunnel to one exit instead of rotating */
948
+ sticky?: boolean;
949
+ };
950
+ PlaygroundRunResultDto: {
951
+ ok: boolean;
952
+ status?: number;
953
+ totalMs: number;
954
+ /** @description Address the target reported seeing */
955
+ exitIp?: string;
956
+ country?: string | null;
957
+ bodyPreview?: string;
958
+ error?: string;
959
+ };
960
+ ProxyBanEventDto: {
961
+ id: string;
962
+ endpointId: string;
963
+ /** @description Endpoint name that was refused */
964
+ endpoint: string;
965
+ /** @description Exit IP observed by the last reachability check */
966
+ exitIp: string | null;
967
+ gateway: string | null;
968
+ /** @description Application whose key reported it; null for an operator report */
969
+ apiKey: string | null;
970
+ /** @example www.example.com */
971
+ targetHost: string;
972
+ /** @example 429 */
973
+ reason: string | null;
974
+ /** Format: date-time */
975
+ expiresAt: string;
976
+ /** @description Whether the penalty is still in force */
977
+ active: boolean;
978
+ /** Format: date-time */
979
+ createdAt: string;
980
+ };
981
+ BanTargetCountDto: {
982
+ /** @example www.example.com */
983
+ targetHost: string;
984
+ count: number;
985
+ };
986
+ EndpointBanSummaryDto: {
987
+ endpointId: string;
988
+ /** @description Endpoint name */
989
+ endpoint: string;
990
+ host: string;
991
+ /** @description Exit IP observed by the last reachability check */
992
+ exitIp: string | null;
993
+ /** @description Bans in the retained history */
994
+ total: number;
995
+ /** @description Bans reported in the last 24 hours */
996
+ last24h: number;
997
+ /** @description Penalties still in force */
998
+ active: number;
999
+ /** Format: date-time */
1000
+ lastBanAt: string;
1001
+ /** @description Most refused first */
1002
+ targets: components['schemas']['BanTargetCountDto'][];
1003
+ };
1004
+ ReportBanRequestDto: {
1005
+ /**
1006
+ * @description Gateway slug the tunnel was opened on
1007
+ * @example portali-aste
1008
+ */
1009
+ gateway: string;
1010
+ /**
1011
+ * @description Host that rejected the request
1012
+ * @example www.example.com
1013
+ */
1014
+ targetHost: string;
1015
+ /** @description Endpoint name, when the reporter knows it */
1016
+ endpoint?: string;
1017
+ /**
1018
+ * @description Why it was reported
1019
+ * @example 429
1020
+ */
1021
+ reason?: string;
1022
+ /** @description Penalty duration in ms; defaults to BAN_COOLDOWN_MS */
1023
+ cooldownMs?: number;
1024
+ /** @description Sticky session to release along with the report */
1025
+ session?: string;
1026
+ };
1027
+ ReportBanResponseDto: {
1028
+ recorded: boolean;
1029
+ /** Format: date-time */
1030
+ penalisedUntil: string | null;
1031
+ /** @description Endpoints still routable for this target on the gateway */
1032
+ remainingEndpoints: number;
1033
+ };
1034
+ SyncIproyalRequestDto: {
1035
+ /**
1036
+ * @description Preview the diff without writing anything
1037
+ * @default false
1038
+ */
1039
+ dryRun: boolean;
1040
+ };
1041
+ EndpointStatsDto: {
1042
+ endpoint: string;
1043
+ established: number;
1044
+ failed: number;
1045
+ lastTargetHost: string | null;
1046
+ avgHandshakeMs: number;
1047
+ };
1048
+ RelayStatsDto: {
1049
+ tunnelsEstablished: number;
1050
+ tunnelsFailed: number;
1051
+ rejected: {
1052
+ [key: string]: number;
1053
+ };
1054
+ byEndpoint: components['schemas']['EndpointStatsDto'][];
1055
+ byGateway: {
1056
+ [key: string]: number;
1057
+ };
1058
+ /** Format: date-time */
1059
+ inventoryLoadedAt: string;
1060
+ };
1061
+ CatalogGatewayDto: {
1062
+ /** @example webshare */
1063
+ slug: string;
1064
+ /** @description Endpoints routable right now */
1065
+ endpoints: number;
1066
+ };
1067
+ };
1068
+ responses: never;
1069
+ parameters: never;
1070
+ requestBodies: never;
1071
+ headers: never;
1072
+ pathItems: never;
1073
+ }
1074
+ interface operations {
1075
+ HealthController_live: {
1076
+ parameters: {
1077
+ query?: never;
1078
+ header?: never;
1079
+ path?: never;
1080
+ cookie?: never;
1081
+ };
1082
+ requestBody?: never;
1083
+ responses: {
1084
+ 200: {
1085
+ headers: {
1086
+ [name: string]: unknown;
1087
+ };
1088
+ content: {
1089
+ 'application/json': components['schemas']['HealthCheckResponseDto'];
1090
+ };
1091
+ };
1092
+ };
1093
+ };
1094
+ HealthController_ready: {
1095
+ parameters: {
1096
+ query?: never;
1097
+ header?: never;
1098
+ path?: never;
1099
+ cookie?: never;
1100
+ };
1101
+ requestBody?: never;
1102
+ responses: {
1103
+ 200: {
1104
+ headers: {
1105
+ [name: string]: unknown;
1106
+ };
1107
+ content: {
1108
+ 'application/json': components['schemas']['HealthCheckResponseDto'];
1109
+ };
1110
+ };
1111
+ 503: {
1112
+ headers: {
1113
+ [name: string]: unknown;
1114
+ };
1115
+ content: {
1116
+ 'application/json': components['schemas']['HealthCheckResponseDto'];
1117
+ };
1118
+ };
1119
+ };
1120
+ };
1121
+ HealthController_status: {
1122
+ parameters: {
1123
+ query?: never;
1124
+ header?: never;
1125
+ path?: never;
1126
+ cookie?: never;
1127
+ };
1128
+ requestBody?: never;
1129
+ responses: {
1130
+ 200: {
1131
+ headers: {
1132
+ [name: string]: unknown;
1133
+ };
1134
+ content: {
1135
+ 'application/json': components['schemas']['HealthReportResponseDto'];
1136
+ };
1137
+ };
1138
+ };
1139
+ };
1140
+ LeaseController_create: {
1141
+ parameters: {
1142
+ query?: never;
1143
+ header?: never;
1144
+ path?: never;
1145
+ cookie?: never;
1146
+ };
1147
+ requestBody: {
1148
+ content: {
1149
+ 'application/json': components['schemas']['CreateLeaseDto'];
1150
+ };
1151
+ };
1152
+ responses: {
1153
+ 201: {
1154
+ headers: {
1155
+ [name: string]: unknown;
1156
+ };
1157
+ content: {
1158
+ 'application/json': components['schemas']['LeaseDto'];
1159
+ };
1160
+ };
1161
+ };
1162
+ };
1163
+ LeaseController_get: {
1164
+ parameters: {
1165
+ query?: never;
1166
+ header?: never;
1167
+ path: {
1168
+ id: string;
1169
+ };
1170
+ cookie?: never;
1171
+ };
1172
+ requestBody?: never;
1173
+ responses: {
1174
+ 200: {
1175
+ headers: {
1176
+ [name: string]: unknown;
1177
+ };
1178
+ content: {
1179
+ 'application/json': components['schemas']['LeaseDto'];
1180
+ };
1181
+ };
1182
+ };
1183
+ };
1184
+ LeaseController_release: {
1185
+ parameters: {
1186
+ query?: never;
1187
+ header?: never;
1188
+ path: {
1189
+ id: string;
1190
+ };
1191
+ cookie?: never;
1192
+ };
1193
+ requestBody?: never;
1194
+ responses: {
1195
+ 204: {
1196
+ headers: {
1197
+ [name: string]: unknown;
1198
+ };
1199
+ content?: never;
1200
+ };
1201
+ };
1202
+ };
1203
+ LeaseController_renew: {
1204
+ parameters: {
1205
+ query?: never;
1206
+ header?: never;
1207
+ path: {
1208
+ id: string;
1209
+ };
1210
+ cookie?: never;
1211
+ };
1212
+ requestBody?: never;
1213
+ responses: {
1214
+ 200: {
1215
+ headers: {
1216
+ [name: string]: unknown;
1217
+ };
1218
+ content: {
1219
+ 'application/json': components['schemas']['LeaseDto'];
1220
+ };
1221
+ };
1222
+ };
1223
+ };
1224
+ LeaseController_report: {
1225
+ parameters: {
1226
+ query?: never;
1227
+ header?: never;
1228
+ path: {
1229
+ id: string;
1230
+ };
1231
+ cookie?: never;
1232
+ };
1233
+ requestBody: {
1234
+ content: {
1235
+ 'application/json': components['schemas']['ReportLeaseDto'];
1236
+ };
1237
+ };
1238
+ responses: {
1239
+ 204: {
1240
+ headers: {
1241
+ [name: string]: unknown;
1242
+ };
1243
+ content?: never;
1244
+ };
1245
+ };
1246
+ };
1247
+ ApiKeysController_list: {
1248
+ parameters: {
1249
+ query?: never;
1250
+ header?: never;
1251
+ path?: never;
1252
+ cookie?: never;
1253
+ };
1254
+ requestBody?: never;
1255
+ responses: {
1256
+ 200: {
1257
+ headers: {
1258
+ [name: string]: unknown;
1259
+ };
1260
+ content: {
1261
+ 'application/json': components['schemas']['ApiKeyDto'][];
1262
+ };
1263
+ };
1264
+ };
1265
+ };
1266
+ ApiKeysController_issue: {
1267
+ parameters: {
1268
+ query?: never;
1269
+ header?: never;
1270
+ path?: never;
1271
+ cookie?: never;
1272
+ };
1273
+ requestBody: {
1274
+ content: {
1275
+ 'application/json': components['schemas']['CreateApiKeyDto'];
1276
+ };
1277
+ };
1278
+ responses: {
1279
+ 201: {
1280
+ headers: {
1281
+ [name: string]: unknown;
1282
+ };
1283
+ content: {
1284
+ 'application/json': components['schemas']['IssuedApiKeyDto'];
1285
+ };
1286
+ };
1287
+ };
1288
+ };
1289
+ ApiKeysController_revoke: {
1290
+ parameters: {
1291
+ query?: never;
1292
+ header?: never;
1293
+ path: {
1294
+ id: string;
1295
+ };
1296
+ cookie?: never;
1297
+ };
1298
+ requestBody?: never;
1299
+ responses: {
1300
+ 200: {
1301
+ headers: {
1302
+ [name: string]: unknown;
1303
+ };
1304
+ content: {
1305
+ 'application/json': components['schemas']['ApiKeyDto'];
1306
+ };
1307
+ };
1308
+ };
1309
+ };
1310
+ ProxiesController_listEndpoints: {
1311
+ parameters: {
1312
+ query?: never;
1313
+ header?: never;
1314
+ path?: never;
1315
+ cookie?: never;
1316
+ };
1317
+ requestBody?: never;
1318
+ responses: {
1319
+ 200: {
1320
+ headers: {
1321
+ [name: string]: unknown;
1322
+ };
1323
+ content: {
1324
+ 'application/json': components['schemas']['ProxyEndpointDto'][];
1325
+ };
1326
+ };
1327
+ };
1328
+ };
1329
+ ProxiesController_listProviderAccounts: {
1330
+ parameters: {
1331
+ query?: never;
1332
+ header?: never;
1333
+ path?: never;
1334
+ cookie?: never;
1335
+ };
1336
+ requestBody?: never;
1337
+ responses: {
1338
+ 200: {
1339
+ headers: {
1340
+ [name: string]: unknown;
1341
+ };
1342
+ content: {
1343
+ 'application/json': components['schemas']['ProviderAccountDto'][];
1344
+ };
1345
+ };
1346
+ };
1347
+ };
1348
+ ProxiesController_createProviderAccount: {
1349
+ parameters: {
1350
+ query?: never;
1351
+ header?: never;
1352
+ path?: never;
1353
+ cookie?: never;
1354
+ };
1355
+ requestBody: {
1356
+ content: {
1357
+ 'application/json': components['schemas']['CreateProviderAccountDto'];
1358
+ };
1359
+ };
1360
+ responses: {
1361
+ 200: {
1362
+ headers: {
1363
+ [name: string]: unknown;
1364
+ };
1365
+ content: {
1366
+ 'application/json': components['schemas']['ProviderAccountDto'];
1367
+ };
1368
+ };
1369
+ };
1370
+ };
1371
+ ProxiesController_getProviderAccount: {
1372
+ parameters: {
1373
+ query?: never;
1374
+ header?: never;
1375
+ path: {
1376
+ id: string;
1377
+ };
1378
+ cookie?: never;
1379
+ };
1380
+ requestBody?: never;
1381
+ responses: {
1382
+ 200: {
1383
+ headers: {
1384
+ [name: string]: unknown;
1385
+ };
1386
+ content: {
1387
+ 'application/json': components['schemas']['ProviderAccountDto'];
1388
+ };
1389
+ };
1390
+ };
1391
+ };
1392
+ ProxiesController_updateProviderAccount: {
1393
+ parameters: {
1394
+ query?: never;
1395
+ header?: never;
1396
+ path: {
1397
+ id: string;
1398
+ };
1399
+ cookie?: never;
1400
+ };
1401
+ requestBody: {
1402
+ content: {
1403
+ 'application/json': components['schemas']['UpdateProviderAccountDto'];
1404
+ };
1405
+ };
1406
+ responses: {
1407
+ 200: {
1408
+ headers: {
1409
+ [name: string]: unknown;
1410
+ };
1411
+ content: {
1412
+ 'application/json': components['schemas']['ProviderAccountDto'];
1413
+ };
1414
+ };
1415
+ };
1416
+ };
1417
+ ProxiesController_pauseProviderAccount: {
1418
+ parameters: {
1419
+ query?: never;
1420
+ header?: never;
1421
+ path: {
1422
+ id: string;
1423
+ };
1424
+ cookie?: never;
1425
+ };
1426
+ requestBody?: never;
1427
+ responses: {
1428
+ 200: {
1429
+ headers: {
1430
+ [name: string]: unknown;
1431
+ };
1432
+ content: {
1433
+ 'application/json': components['schemas']['ProviderAccountDto'];
1434
+ };
1435
+ };
1436
+ };
1437
+ };
1438
+ ProxiesController_resumeProviderAccount: {
1439
+ parameters: {
1440
+ query?: never;
1441
+ header?: never;
1442
+ path: {
1443
+ id: string;
1444
+ };
1445
+ cookie?: never;
1446
+ };
1447
+ requestBody?: never;
1448
+ responses: {
1449
+ 200: {
1450
+ headers: {
1451
+ [name: string]: unknown;
1452
+ };
1453
+ content: {
1454
+ 'application/json': components['schemas']['ProviderAccountDto'];
1455
+ };
1456
+ };
1457
+ };
1458
+ };
1459
+ ProxiesController_disconnectProviderAccount: {
1460
+ parameters: {
1461
+ query?: never;
1462
+ header?: never;
1463
+ path: {
1464
+ id: string;
1465
+ };
1466
+ cookie?: never;
1467
+ };
1468
+ requestBody?: never;
1469
+ responses: {
1470
+ 200: {
1471
+ headers: {
1472
+ [name: string]: unknown;
1473
+ };
1474
+ content: {
1475
+ 'application/json': components['schemas']['ProviderAccountDto'];
1476
+ };
1477
+ };
1478
+ };
1479
+ };
1480
+ ProxiesController_listProviderResources: {
1481
+ parameters: {
1482
+ query?: never;
1483
+ header?: never;
1484
+ path: {
1485
+ id: string;
1486
+ };
1487
+ cookie?: never;
1488
+ };
1489
+ requestBody?: never;
1490
+ responses: {
1491
+ 200: {
1492
+ headers: {
1493
+ [name: string]: unknown;
1494
+ };
1495
+ content: {
1496
+ 'application/json': components['schemas']['ProviderResourceDto'][];
1497
+ };
1498
+ };
1499
+ };
1500
+ };
1501
+ ProxiesController_listProviderSyncRuns: {
1502
+ parameters: {
1503
+ query?: never;
1504
+ header?: never;
1505
+ path: {
1506
+ id: string;
1507
+ };
1508
+ cookie?: never;
1509
+ };
1510
+ requestBody?: never;
1511
+ responses: {
1512
+ 200: {
1513
+ headers: {
1514
+ [name: string]: unknown;
1515
+ };
1516
+ content: {
1517
+ 'application/json': components['schemas']['ProviderSyncRunDto'][];
1518
+ };
1519
+ };
1520
+ };
1521
+ };
1522
+ ProxiesController_testProviderAccount: {
1523
+ parameters: {
1524
+ query?: never;
1525
+ header?: never;
1526
+ path: {
1527
+ id: string;
1528
+ };
1529
+ cookie?: never;
1530
+ };
1531
+ requestBody?: never;
1532
+ responses: {
1533
+ 200: {
1534
+ headers: {
1535
+ [name: string]: unknown;
1536
+ };
1537
+ content: {
1538
+ 'application/json': components['schemas']['ProviderSyncResultDto'];
1539
+ };
1540
+ };
1541
+ };
1542
+ };
1543
+ ProxiesController_syncProviderAccount: {
1544
+ parameters: {
1545
+ query?: never;
1546
+ header?: never;
1547
+ path: {
1548
+ id: string;
1549
+ };
1550
+ cookie?: never;
1551
+ };
1552
+ requestBody: {
1553
+ content: {
1554
+ 'application/json': components['schemas']['SyncProviderAccountDto'];
1555
+ };
1556
+ };
1557
+ responses: {
1558
+ 200: {
1559
+ headers: {
1560
+ [name: string]: unknown;
1561
+ };
1562
+ content: {
1563
+ 'application/json': components['schemas']['ProviderSyncResultDto'];
1564
+ };
1565
+ };
1566
+ };
1567
+ };
1568
+ ProxiesController_updateEndpoint: {
1569
+ parameters: {
1570
+ query?: never;
1571
+ header?: never;
1572
+ path: {
1573
+ id: string;
1574
+ };
1575
+ cookie?: never;
1576
+ };
1577
+ requestBody: {
1578
+ content: {
1579
+ 'application/json': components['schemas']['UpdateEndpointDto'];
1580
+ };
1581
+ };
1582
+ responses: {
1583
+ 200: {
1584
+ headers: {
1585
+ [name: string]: unknown;
1586
+ };
1587
+ content: {
1588
+ 'application/json': components['schemas']['ProxyEndpointDto'];
1589
+ };
1590
+ };
1591
+ };
1592
+ };
1593
+ ProxiesController_checkEndpoint: {
1594
+ parameters: {
1595
+ query?: never;
1596
+ header?: never;
1597
+ path: {
1598
+ id: string;
1599
+ };
1600
+ cookie?: never;
1601
+ };
1602
+ requestBody?: never;
1603
+ responses: {
1604
+ 200: {
1605
+ headers: {
1606
+ [name: string]: unknown;
1607
+ };
1608
+ content: {
1609
+ 'application/json': components['schemas']['EndpointCheckResultDto'];
1610
+ };
1611
+ };
1612
+ };
1613
+ };
1614
+ ProxiesController_checkAllEndpoints: {
1615
+ parameters: {
1616
+ query?: never;
1617
+ header?: never;
1618
+ path?: never;
1619
+ cookie?: never;
1620
+ };
1621
+ requestBody?: never;
1622
+ responses: {
1623
+ 200: {
1624
+ headers: {
1625
+ [name: string]: unknown;
1626
+ };
1627
+ content: {
1628
+ 'application/json': components['schemas']['EndpointCheckResultDto'][];
1629
+ };
1630
+ };
1631
+ };
1632
+ };
1633
+ ProxiesController_listGateways: {
1634
+ parameters: {
1635
+ query?: never;
1636
+ header?: never;
1637
+ path?: never;
1638
+ cookie?: never;
1639
+ };
1640
+ requestBody?: never;
1641
+ responses: {
1642
+ 200: {
1643
+ headers: {
1644
+ [name: string]: unknown;
1645
+ };
1646
+ content: {
1647
+ 'application/json': components['schemas']['ProxyGatewayDto'][];
1648
+ };
1649
+ };
1650
+ };
1651
+ };
1652
+ ProxiesController_createGateway: {
1653
+ parameters: {
1654
+ query?: never;
1655
+ header?: never;
1656
+ path?: never;
1657
+ cookie?: never;
1658
+ };
1659
+ requestBody: {
1660
+ content: {
1661
+ 'application/json': components['schemas']['CreateGatewayDto'];
1662
+ };
1663
+ };
1664
+ responses: {
1665
+ 200: {
1666
+ headers: {
1667
+ [name: string]: unknown;
1668
+ };
1669
+ content: {
1670
+ 'application/json': components['schemas']['ProxyGatewayDto'];
1671
+ };
1672
+ };
1673
+ };
1674
+ };
1675
+ ProxiesController_removeGateway: {
1676
+ parameters: {
1677
+ query?: never;
1678
+ header?: never;
1679
+ path: {
1680
+ id: string;
1681
+ };
1682
+ cookie?: never;
1683
+ };
1684
+ requestBody?: never;
1685
+ responses: {
1686
+ 204: {
1687
+ headers: {
1688
+ [name: string]: unknown;
1689
+ };
1690
+ content?: never;
1691
+ };
1692
+ };
1693
+ };
1694
+ ProxiesController_updateGateway: {
1695
+ parameters: {
1696
+ query?: never;
1697
+ header?: never;
1698
+ path: {
1699
+ id: string;
1700
+ };
1701
+ cookie?: never;
1702
+ };
1703
+ requestBody: {
1704
+ content: {
1705
+ 'application/json': components['schemas']['UpdateGatewayDto'];
1706
+ };
1707
+ };
1708
+ responses: {
1709
+ 200: {
1710
+ headers: {
1711
+ [name: string]: unknown;
1712
+ };
1713
+ content: {
1714
+ 'application/json': components['schemas']['ProxyGatewayDto'];
1715
+ };
1716
+ };
1717
+ };
1718
+ };
1719
+ ProxiesController_addMember: {
1720
+ parameters: {
1721
+ query?: never;
1722
+ header?: never;
1723
+ path: {
1724
+ id: string;
1725
+ };
1726
+ cookie?: never;
1727
+ };
1728
+ requestBody: {
1729
+ content: {
1730
+ 'application/json': components['schemas']['GatewayMemberDto'];
1731
+ };
1732
+ };
1733
+ responses: {
1734
+ 200: {
1735
+ headers: {
1736
+ [name: string]: unknown;
1737
+ };
1738
+ content: {
1739
+ 'application/json': components['schemas']['ProxyGatewayDto'];
1740
+ };
1741
+ };
1742
+ };
1743
+ };
1744
+ ProxiesController_removeMember: {
1745
+ parameters: {
1746
+ query?: never;
1747
+ header?: never;
1748
+ path: {
1749
+ id: string;
1750
+ endpointId: string;
1751
+ };
1752
+ cookie?: never;
1753
+ };
1754
+ requestBody?: never;
1755
+ responses: {
1756
+ 200: {
1757
+ headers: {
1758
+ [name: string]: unknown;
1759
+ };
1760
+ content: {
1761
+ 'application/json': components['schemas']['ProxyGatewayDto'];
1762
+ };
1763
+ };
1764
+ };
1765
+ };
1766
+ ProxiesController_playgroundConfig: {
1767
+ parameters: {
1768
+ query?: never;
1769
+ header?: never;
1770
+ path?: never;
1771
+ cookie?: never;
1772
+ };
1773
+ requestBody: {
1774
+ content: {
1775
+ 'application/json': components['schemas']['PlaygroundConfigRequestDto'];
1776
+ };
1777
+ };
1778
+ responses: {
1779
+ 200: {
1780
+ headers: {
1781
+ [name: string]: unknown;
1782
+ };
1783
+ content: {
1784
+ 'application/json': components['schemas']['PlaygroundConfigDto'][];
1785
+ };
1786
+ };
1787
+ };
1788
+ };
1789
+ ProxiesController_playgroundRun: {
1790
+ parameters: {
1791
+ query?: never;
1792
+ header?: never;
1793
+ path?: never;
1794
+ cookie?: never;
1795
+ };
1796
+ requestBody: {
1797
+ content: {
1798
+ 'application/json': components['schemas']['PlaygroundRunRequestDto'];
1799
+ };
1800
+ };
1801
+ responses: {
1802
+ 200: {
1803
+ headers: {
1804
+ [name: string]: unknown;
1805
+ };
1806
+ content: {
1807
+ 'application/json': components['schemas']['PlaygroundRunResultDto'];
1808
+ };
1809
+ };
1810
+ };
1811
+ };
1812
+ ProxiesController_listBans: {
1813
+ parameters: {
1814
+ query?: {
1815
+ /** @description Only this endpoint */
1816
+ endpointId?: string;
1817
+ targetHost?: string;
1818
+ limit?: number;
1819
+ };
1820
+ header?: never;
1821
+ path?: never;
1822
+ cookie?: never;
1823
+ };
1824
+ requestBody?: never;
1825
+ responses: {
1826
+ 200: {
1827
+ headers: {
1828
+ [name: string]: unknown;
1829
+ };
1830
+ content: {
1831
+ 'application/json': components['schemas']['ProxyBanEventDto'][];
1832
+ };
1833
+ };
1834
+ };
1835
+ };
1836
+ ProxiesController_summarizeBans: {
1837
+ parameters: {
1838
+ query?: never;
1839
+ header?: never;
1840
+ path?: never;
1841
+ cookie?: never;
1842
+ };
1843
+ requestBody?: never;
1844
+ responses: {
1845
+ 200: {
1846
+ headers: {
1847
+ [name: string]: unknown;
1848
+ };
1849
+ content: {
1850
+ 'application/json': components['schemas']['EndpointBanSummaryDto'][];
1851
+ };
1852
+ };
1853
+ };
1854
+ };
1855
+ ProxiesController_report: {
1856
+ parameters: {
1857
+ query?: never;
1858
+ header?: never;
1859
+ path?: never;
1860
+ cookie?: never;
1861
+ };
1862
+ requestBody: {
1863
+ content: {
1864
+ 'application/json': components['schemas']['ReportBanRequestDto'];
1865
+ };
1866
+ };
1867
+ responses: {
1868
+ 200: {
1869
+ headers: {
1870
+ [name: string]: unknown;
1871
+ };
1872
+ content: {
1873
+ 'application/json': components['schemas']['ReportBanResponseDto'];
1874
+ };
1875
+ };
1876
+ };
1877
+ };
1878
+ ProxiesController_syncIproyal: {
1879
+ parameters: {
1880
+ query?: never;
1881
+ header?: never;
1882
+ path?: never;
1883
+ cookie?: never;
1884
+ };
1885
+ requestBody: {
1886
+ content: {
1887
+ 'application/json': components['schemas']['SyncIproyalRequestDto'];
1888
+ };
1889
+ };
1890
+ responses: {
1891
+ 200: {
1892
+ headers: {
1893
+ [name: string]: unknown;
1894
+ };
1895
+ content: {
1896
+ 'application/json': components['schemas']['ProviderSyncResultDto'];
1897
+ };
1898
+ };
1899
+ };
1900
+ };
1901
+ ProxiesController_stats: {
1902
+ parameters: {
1903
+ query?: never;
1904
+ header?: never;
1905
+ path?: never;
1906
+ cookie?: never;
1907
+ };
1908
+ requestBody?: never;
1909
+ responses: {
1910
+ 200: {
1911
+ headers: {
1912
+ [name: string]: unknown;
1913
+ };
1914
+ content: {
1915
+ 'application/json': components['schemas']['RelayStatsDto'];
1916
+ };
1917
+ };
1918
+ };
1919
+ };
1920
+ ProxiesController_refresh: {
1921
+ parameters: {
1922
+ query?: never;
1923
+ header?: never;
1924
+ path?: never;
1925
+ cookie?: never;
1926
+ };
1927
+ requestBody?: never;
1928
+ responses: {
1929
+ 200: {
1930
+ headers: {
1931
+ [name: string]: unknown;
1932
+ };
1933
+ content: {
1934
+ 'application/json': {
1935
+ gateways?: number;
1936
+ apiKeys?: number;
1937
+ };
1938
+ };
1939
+ };
1940
+ };
1941
+ };
1942
+ CatalogController_list: {
1943
+ parameters: {
1944
+ query?: never;
1945
+ header?: never;
1946
+ path?: never;
1947
+ cookie?: never;
1948
+ };
1949
+ requestBody?: never;
1950
+ responses: {
1951
+ 200: {
1952
+ headers: {
1953
+ [name: string]: unknown;
1954
+ };
1955
+ content: {
1956
+ 'application/json': components['schemas']['CatalogGatewayDto'][];
1957
+ };
1958
+ };
1959
+ };
1960
+ };
1961
+ }
1962
+
1963
+ type ApiPaths = paths;
1964
+ type ApiSchemas = components['schemas'];
1965
+ type CatalogGateway = ApiSchemas['CatalogGatewayDto'];
1966
+ type Lease = ApiSchemas['LeaseDto'];
1967
+ type CreateLeaseInput = ApiSchemas['CreateLeaseDto'];
1968
+ type ReportLeaseInput = ApiSchemas['ReportLeaseDto'];
1969
+ type CreateApiKeyInput = ApiSchemas['CreateApiKeyDto'];
1970
+ type SyncProviderAccountInput = ApiSchemas['SyncProviderAccountDto'];
1971
+ type GatewayMemberInput = ApiSchemas['GatewayMemberDto'];
1972
+ type RefreshResult = ApiPaths['/proxies/refresh']['post']['responses'][200]['content']['application/json'];
1973
+ type ProxyEndpoint = ApiSchemas['ProxyEndpointDto'];
1974
+ type ProxyGateway = ApiSchemas['ProxyGatewayDto'];
1975
+ type ApiKey = ApiSchemas['ApiKeyDto'];
1976
+ type IssuedApiKey = ApiSchemas['IssuedApiKeyDto'];
1977
+ type ProxyBanEvent = ApiSchemas['ProxyBanEventDto'];
1978
+ type EndpointBanSummary = ApiSchemas['EndpointBanSummaryDto'];
1979
+ type BanQuery = NonNullable<ApiPaths['/proxies/bans']['get']['parameters']['query']>;
1980
+ type UpdateEndpointInput = ApiSchemas['UpdateEndpointDto'];
1981
+ type ReportBanRequest = ApiSchemas['ReportBanRequestDto'];
1982
+ type ReportBanResponse = ApiSchemas['ReportBanResponseDto'];
1983
+ type RelayStats = ApiSchemas['RelayStatsDto'];
1984
+ type SyncIproyalRequest = ApiSchemas['SyncIproyalRequestDto'];
1985
+ type SyncIproyalResponse = ApiSchemas['ProviderSyncResultDto'];
1986
+ type ProviderAccount = ApiSchemas['ProviderAccountDto'];
1987
+ type ProviderResource = ApiSchemas['ProviderResourceDto'];
1988
+ type ProviderSyncRun = ApiSchemas['ProviderSyncRunDto'];
1989
+ type ProviderSyncResult = ApiSchemas['ProviderSyncResultDto'];
1990
+ type ProviderAccountInput = ApiSchemas['CreateProviderAccountDto'];
1991
+ type ProviderAccountPatch = ApiSchemas['UpdateProviderAccountDto'];
1992
+ type EndpointCheckResult = ApiSchemas['EndpointCheckResultDto'];
1993
+ type CreateGatewayInput = ApiSchemas['CreateGatewayDto'];
1994
+ type UpdateGatewayInput = ApiSchemas['UpdateGatewayDto'];
1995
+ type PlaygroundConfig = ApiSchemas['PlaygroundConfigDto'];
1996
+ type PlaygroundConfigRequest = ApiSchemas['PlaygroundConfigRequestDto'];
1997
+ type PlaygroundRunRequest = ApiSchemas['PlaygroundRunRequestDto'];
1998
+ type PlaygroundRunResult = ApiSchemas['PlaygroundRunResultDto'];
1999
+
2000
+ interface ProxyClientOptions {
2001
+ /** Absolute API root, including /api. No credentials or query parameters. */
2002
+ baseUrl: string;
2003
+ /** Application key for createProxyClient; operator key for the admin entry. */
2004
+ apiKey?: string;
2005
+ /** Fetch semantics: receives a Request and returns a Response, not a body. */
2006
+ fetch?: (request: Request) => Promise<Response>;
2007
+ headers?: HeadersInit;
2008
+ credentials?: RequestCredentials;
2009
+ }
2010
+ interface RequestOptions {
2011
+ signal?: AbortSignal;
2012
+ }
2013
+ /** An HTTP failure. Body is untrusted JSON, text, or undefined for an empty body. */
2014
+ declare class ApiError extends Error {
2015
+ readonly status: number;
2016
+ readonly statusText: string;
2017
+ readonly headers: Headers;
2018
+ readonly body: unknown;
2019
+ readonly requestId: string | undefined;
2020
+ constructor(response: Response, body: unknown);
2021
+ }
2022
+ /** Invalid JSON in a successful response. Network and abort errors pass through. */
2023
+ declare class ResponseParseError extends Error {
2024
+ readonly status: number;
2025
+ readonly headers: Headers;
2026
+ readonly body: string;
2027
+ constructor(response: Response, body: string, cause: unknown);
2028
+ }
2029
+
2030
+ export { ApiError as w, ResponseParseError as x };
2031
+ export type { ApiKey as A, BanQuery as B, CreateApiKeyInput as C, ReportLeaseInput as D, EndpointCheckResult as E, GatewayMemberInput as G, IssuedApiKey as I, Lease as L, ProxyEndpoint as P, RequestOptions as R, SyncProviderAccountInput as S, UpdateEndpointInput as U, ProviderAccount as a, ProviderAccountInput as b, ProviderAccountPatch as c, ProviderSyncResult as d, ProviderResource as e, ProviderSyncRun as f, ProxyGateway as g, CreateGatewayInput as h, UpdateGatewayInput as i, ProxyBanEvent as j, EndpointBanSummary as k, PlaygroundConfigRequest as l, PlaygroundConfig as m, PlaygroundRunRequest as n, PlaygroundRunResult as o, ReportBanRequest as p, ReportBanResponse as q, RelayStats as r, RefreshResult as s, SyncIproyalRequest as t, SyncIproyalResponse as u, ProxyClientOptions as v, CatalogGateway as y, CreateLeaseInput as z };