@nosana/api 2.14.2 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -45,7 +45,10 @@ export interface paths {
45
45
  };
46
46
  get?: never;
47
47
  put?: never;
48
- /** Validate API key */
48
+ /**
49
+ * Validate API key
50
+ * @description Check whether an API key is active and report whose it is, with its scopes.
51
+ */
49
52
  post: operations["postAuthValidate-api-key"];
50
53
  delete?: never;
51
54
  options?: never;
@@ -73,6 +76,26 @@ export interface paths {
73
76
  patch?: never;
74
77
  trace?: never;
75
78
  };
79
+ "/auth/scopes": {
80
+ parameters: {
81
+ query?: never;
82
+ header?: never;
83
+ path?: never;
84
+ cookie?: never;
85
+ };
86
+ /**
87
+ * List scopes
88
+ * @description Every scope an API key may hold, with the wording shown to users. Filter on `oauthGrantable` for the set an OAuth app may be given.
89
+ */
90
+ get: operations["getAuthScopes"];
91
+ put?: never;
92
+ post?: never;
93
+ delete?: never;
94
+ options?: never;
95
+ head?: never;
96
+ patch?: never;
97
+ trace?: never;
98
+ };
76
99
  "/api-keys/": {
77
100
  parameters: {
78
101
  query?: never;
@@ -128,7 +151,7 @@ export interface paths {
128
151
  put?: never;
129
152
  /**
130
153
  * Update API Key
131
- * @description Update an API key (name or status)
154
+ * @description Update an API key's name, status or model restriction.
132
155
  */
133
156
  post: operations["postApi-keysByIdUpdate"];
134
157
  delete?: never;
@@ -299,6 +322,103 @@ export interface paths {
299
322
  patch?: never;
300
323
  trace?: never;
301
324
  };
325
+ "/credits/internal/llm/finalize": {
326
+ parameters: {
327
+ query?: never;
328
+ header?: never;
329
+ path?: never;
330
+ cookie?: never;
331
+ };
332
+ get?: never;
333
+ put?: never;
334
+ post: operations["postCreditsInternalLlmFinalize"];
335
+ delete?: never;
336
+ options?: never;
337
+ head?: never;
338
+ patch?: never;
339
+ trace?: never;
340
+ };
341
+ "/credits/llm/usage": {
342
+ parameters: {
343
+ query?: never;
344
+ header?: never;
345
+ path?: never;
346
+ cookie?: never;
347
+ };
348
+ /** List LLM inference usage */
349
+ get: operations["getCreditsLlmUsage"];
350
+ put?: never;
351
+ post?: never;
352
+ delete?: never;
353
+ options?: never;
354
+ head?: never;
355
+ patch?: never;
356
+ trace?: never;
357
+ };
358
+ "/credits/internal/llm/models": {
359
+ parameters: {
360
+ query?: never;
361
+ header?: never;
362
+ path?: never;
363
+ cookie?: never;
364
+ };
365
+ get: operations["getCreditsInternalLlmModels"];
366
+ put?: never;
367
+ post?: never;
368
+ delete?: never;
369
+ options?: never;
370
+ head?: never;
371
+ patch?: never;
372
+ trace?: never;
373
+ };
374
+ "/credits/admin/llm/templates": {
375
+ parameters: {
376
+ query?: never;
377
+ header?: never;
378
+ path?: never;
379
+ cookie?: never;
380
+ };
381
+ get: operations["getCreditsAdminLlmTemplates"];
382
+ put?: never;
383
+ post?: never;
384
+ delete?: never;
385
+ options?: never;
386
+ head?: never;
387
+ patch?: never;
388
+ trace?: never;
389
+ };
390
+ "/credits/admin/llm/models": {
391
+ parameters: {
392
+ query?: never;
393
+ header?: never;
394
+ path?: never;
395
+ cookie?: never;
396
+ };
397
+ get: operations["getCreditsAdminLlmModels"];
398
+ put?: never;
399
+ post: operations["postCreditsAdminLlmModels"];
400
+ delete?: never;
401
+ options?: never;
402
+ head?: never;
403
+ patch?: never;
404
+ trace?: never;
405
+ };
406
+ "/credits/admin/llm/models/{id}": {
407
+ parameters: {
408
+ query?: never;
409
+ header?: never;
410
+ path?: never;
411
+ cookie?: never;
412
+ };
413
+ get?: never;
414
+ put?: never;
415
+ post?: never;
416
+ delete: operations["deleteCreditsAdminLlmModelsById"];
417
+ options?: never;
418
+ head?: never;
419
+ patch: operations["patchCreditsAdminLlmModelsById"];
420
+ trace?: never;
421
+ };
302
422
  "/templates/": {
303
423
  parameters: {
304
424
  query?: never;
@@ -407,6 +527,26 @@ export interface paths {
407
527
  patch?: never;
408
528
  trace?: never;
409
529
  };
530
+ "/jobs/assign/batch": {
531
+ parameters: {
532
+ query?: never;
533
+ header?: never;
534
+ path?: never;
535
+ cookie?: never;
536
+ };
537
+ get?: never;
538
+ put?: never;
539
+ /**
540
+ * Bulk-assign jobs to nodes using credits
541
+ * @description Bulk-create jobs assigned directly to the given `node` each (on-chain `assign` instead of listing into the market queue), in the fewest packed transactions. Same contract as `/jobs/list/batch`: requires an `Idempotency-Key` header (one key per batch), the batch is posted at most once per key, and the response reports each job's outcome by `index` — `confirmed` (with its `job`/`run` address) or `expired`. Re-post only the expired items under a fresh key. Still-confirming returns 409 `IDEMPOTENCY_KEY_IN_PROGRESS` (retry the same key).
542
+ */
543
+ post: operations["postJobsAssignBatch"];
544
+ delete?: never;
545
+ options?: never;
546
+ head?: never;
547
+ patch?: never;
548
+ trace?: never;
549
+ };
410
550
  "/jobs/{address}/extend": {
411
551
  parameters: {
412
552
  query?: never;
@@ -547,6 +687,26 @@ export interface paths {
547
687
  patch?: never;
548
688
  trace?: never;
549
689
  };
690
+ "/payments/setup-intent/confirm": {
691
+ parameters: {
692
+ query?: never;
693
+ header?: never;
694
+ path?: never;
695
+ cookie?: never;
696
+ };
697
+ get?: never;
698
+ put?: never;
699
+ /**
700
+ * Finalize card setup after 3D Secure
701
+ * @description Re-checks a SetupIntent after the client completes 3D Secure and records the verification result
702
+ */
703
+ post: operations["postPaymentsSetup-intentConfirm"];
704
+ delete?: never;
705
+ options?: never;
706
+ head?: never;
707
+ patch?: never;
708
+ trace?: never;
709
+ };
550
710
  "/payments/methods": {
551
711
  parameters: {
552
712
  query?: never;
@@ -627,6 +787,26 @@ export interface paths {
627
787
  patch?: never;
628
788
  trace?: never;
629
789
  };
790
+ "/payments/payment-intent/confirm": {
791
+ parameters: {
792
+ query?: never;
793
+ header?: never;
794
+ path?: never;
795
+ cookie?: never;
796
+ };
797
+ get?: never;
798
+ put?: never;
799
+ /**
800
+ * Finalize purchase after 3D Secure
801
+ * @description Re-checks a PaymentIntent after the client completes 3D Secure and grants credits. Idempotent with the payment_intent.succeeded webhook.
802
+ */
803
+ post: operations["postPaymentsPayment-intentConfirm"];
804
+ delete?: never;
805
+ options?: never;
806
+ head?: never;
807
+ patch?: never;
808
+ trace?: never;
809
+ };
630
810
  "/payments/purchases": {
631
811
  parameters: {
632
812
  query?: never;
@@ -647,30 +827,42 @@ export interface paths {
647
827
  patch?: never;
648
828
  trace?: never;
649
829
  };
650
- "/metrics": {
830
+ "/oauth-apps/": {
651
831
  parameters: {
652
832
  query?: never;
653
833
  header?: never;
654
834
  path?: never;
655
835
  cookie?: never;
656
836
  };
657
- get: operations["getMetrics"];
837
+ /**
838
+ * List OAuth apps
839
+ * @description List the OAuth apps owned by the authenticated user.
840
+ */
841
+ get: operations["getOauth-apps"];
658
842
  put?: never;
659
- post?: never;
843
+ /**
844
+ * Create OAuth app
845
+ * @description Register an OAuth 2.1 client (a 'Connect with Nosana' app) owned by the authenticated user.
846
+ */
847
+ post: operations["postOauth-apps"];
660
848
  delete?: never;
661
849
  options?: never;
662
850
  head?: never;
663
851
  patch?: never;
664
852
  trace?: never;
665
853
  };
666
- "/health": {
854
+ "/oauth-apps/{id}": {
667
855
  parameters: {
668
856
  query?: never;
669
857
  header?: never;
670
858
  path?: never;
671
859
  cookie?: never;
672
860
  };
673
- get: operations["getHealth"];
861
+ /**
862
+ * Get OAuth app
863
+ * @description Get one of the authenticated user's OAuth apps by client id.
864
+ */
865
+ get: operations["getOauth-appsById"];
674
866
  put?: never;
675
867
  post?: never;
676
868
  delete?: never;
@@ -679,96 +871,1182 @@ export interface paths {
679
871
  patch?: never;
680
872
  trace?: never;
681
873
  };
682
- }
683
- export type webhooks = Record<string, never>;
684
- export interface components {
685
- schemas: {
874
+ "/oauth-apps/{id}/update": {
875
+ parameters: {
876
+ query?: never;
877
+ header?: never;
878
+ path?: never;
879
+ cookie?: never;
880
+ };
881
+ get?: never;
882
+ put?: never;
686
883
  /**
687
- * @description Machine-readable idempotency control code. Branch on this, not the HTTP status alone. IN_PROGRESS → retry the SAME key; EXPIRED → mint a fresh key and re-post; PAYLOAD_MISMATCH → key reused with a different payload, do not retry.
688
- * @enum {string}
884
+ * Update OAuth app
885
+ * @description Update one of the authenticated user's OAuth apps.
689
886
  */
690
- IdempotencyCode: "IDEMPOTENCY_KEY_PAYLOAD_MISMATCH" | "IDEMPOTENCY_KEY_EXPIRED" | "IDEMPOTENCY_KEY_IN_PROGRESS";
691
- /** @description Idempotency control response. Branch on `code`, never on the HTTP status. */
692
- IdempotencyError: {
693
- code?: components["schemas"]["IdempotencyCode"];
694
- message: string;
695
- /** @description Seconds to wait before retrying the SAME key. Present for IDEMPOTENCY_KEY_IN_PROGRESS; mirrors the Retry-After header. */
696
- retryAfter?: number;
697
- };
698
- /** @description Ordinary business error. Has no `code` field (unlike IdempotencyError). */
699
- JobError: {
700
- message: string;
701
- };
702
- CreateJobWithCreditsResponse: {
703
- tx: string;
704
- job: string;
705
- run: string;
706
- credits: {
707
- costUSD: number;
708
- creditsUsed: number;
709
- reservationId: string;
710
- project: string;
711
- };
712
- };
713
- ExtendJobWithCreditsResponse: {
714
- tx: (string | null) | null;
715
- job: string;
716
- credits?: {
717
- costUSD: number;
718
- creditsUsed: number;
719
- reservationId: string;
720
- };
721
- };
722
- StopJobWithCreditsResponse: {
723
- tx: (string | null) | null;
724
- job: string;
725
- delisted: boolean;
726
- outcome?: "delisted" | "ended" | "already_terminal";
727
- };
728
- JobsBatchResponse: {
729
- items: {
730
- index: number;
731
- status: "confirmed" | "expired";
732
- job?: string;
733
- run?: string;
734
- /** @description On-chain transaction signature (base58). */
735
- tx?: string;
736
- }[];
737
- };
887
+ post: operations["postOauth-appsByIdUpdate"];
888
+ delete?: never;
889
+ options?: never;
890
+ head?: never;
891
+ patch?: never;
892
+ trace?: never;
738
893
  };
739
- responses: never;
740
- parameters: never;
741
- requestBodies: never;
742
- headers: never;
743
- pathItems: never;
744
- }
745
- export type $defs = Record<string, never>;
746
- export interface operations {
747
- getIndex: {
894
+ "/oauth-apps/{id}/delete": {
748
895
  parameters: {
749
896
  query?: never;
750
897
  header?: never;
751
898
  path?: never;
752
899
  cookie?: never;
753
900
  };
754
- requestBody?: never;
755
- responses: {
756
- 200: {
757
- headers: {
758
- [name: string]: unknown;
759
- };
760
- content?: never;
761
- };
762
- };
901
+ get?: never;
902
+ put?: never;
903
+ /**
904
+ * Delete OAuth app
905
+ * @description Delete one of the authenticated user's OAuth apps.
906
+ */
907
+ post: operations["postOauth-appsByIdDelete"];
908
+ delete?: never;
909
+ options?: never;
910
+ head?: never;
911
+ patch?: never;
912
+ trace?: never;
763
913
  };
764
- "postAuthValidate-session": {
914
+ "/metrics": {
765
915
  parameters: {
766
916
  query?: never;
767
917
  header?: never;
768
918
  path?: never;
769
919
  cookie?: never;
770
920
  };
771
- requestBody: {
921
+ get: operations["getMetrics"];
922
+ put?: never;
923
+ post?: never;
924
+ delete?: never;
925
+ options?: never;
926
+ head?: never;
927
+ patch?: never;
928
+ trace?: never;
929
+ };
930
+ "/health": {
931
+ parameters: {
932
+ query?: never;
933
+ header?: never;
934
+ path?: never;
935
+ cookie?: never;
936
+ };
937
+ get: operations["getHealth"];
938
+ put?: never;
939
+ post?: never;
940
+ delete?: never;
941
+ options?: never;
942
+ head?: never;
943
+ patch?: never;
944
+ trace?: never;
945
+ };
946
+ "/jobs/{address}/node/info": {
947
+ parameters: {
948
+ query?: never;
949
+ header?: never;
950
+ path?: never;
951
+ cookie?: never;
952
+ };
953
+ /**
954
+ * Stream job info
955
+ * @description Server-sent events: the job's flow without logs plus its task status, sent on open and whenever it changes, until the job ends. Signed on your behalf; only jobs you posted are reachable — anything else answers 404.
956
+ */
957
+ get: {
958
+ parameters: {
959
+ query?: never;
960
+ header?: never;
961
+ path: {
962
+ /** @description Job address */
963
+ address: string;
964
+ };
965
+ cookie?: never;
966
+ };
967
+ requestBody?: never;
968
+ responses: {
969
+ /** @description A stream of `JobInfo` frames as unnamed `message` events. */
970
+ 200: {
971
+ headers: {
972
+ [name: string]: unknown;
973
+ };
974
+ content: {
975
+ "text/event-stream": string;
976
+ };
977
+ };
978
+ /** @description No job with that address, or the caller does not own it. */
979
+ 404: {
980
+ headers: {
981
+ [name: string]: unknown;
982
+ };
983
+ content?: never;
984
+ };
985
+ /** @description This job has not been picked up by a node yet. */
986
+ 409: {
987
+ headers: {
988
+ [name: string]: unknown;
989
+ };
990
+ content?: never;
991
+ };
992
+ /** @description The indexer or the node running this job could not be reached. */
993
+ 502: {
994
+ headers: {
995
+ [name: string]: unknown;
996
+ };
997
+ content?: never;
998
+ };
999
+ };
1000
+ };
1001
+ put?: never;
1002
+ post?: never;
1003
+ delete?: never;
1004
+ options?: never;
1005
+ head?: never;
1006
+ patch?: never;
1007
+ trace?: never;
1008
+ };
1009
+ "/jobs/{address}/node/results": {
1010
+ parameters: {
1011
+ query?: never;
1012
+ header?: never;
1013
+ path?: never;
1014
+ cookie?: never;
1015
+ };
1016
+ /**
1017
+ * Collect the job results
1018
+ * @description The finished flow state. Available once the job waits for its result to be collected; collecting it lets the node finish the job. The node labels the body as text, but it is JSON. Signed on your behalf; only jobs you posted are reachable — anything else answers 404.
1019
+ */
1020
+ get: {
1021
+ parameters: {
1022
+ query?: never;
1023
+ header?: never;
1024
+ path: {
1025
+ /** @description Job address */
1026
+ address: string;
1027
+ };
1028
+ cookie?: never;
1029
+ };
1030
+ requestBody?: never;
1031
+ responses: {
1032
+ /** @description The flow state. */
1033
+ 200: {
1034
+ headers: {
1035
+ [name: string]: unknown;
1036
+ };
1037
+ content: {
1038
+ "application/json": components["schemas"]["FlowState"];
1039
+ };
1040
+ };
1041
+ /** @description No job with that address, or the caller does not own it. */
1042
+ 404: {
1043
+ headers: {
1044
+ [name: string]: unknown;
1045
+ };
1046
+ content?: never;
1047
+ };
1048
+ /** @description This job has not been picked up by a node yet. */
1049
+ 409: {
1050
+ headers: {
1051
+ [name: string]: unknown;
1052
+ };
1053
+ content?: never;
1054
+ };
1055
+ /** @description The indexer or the node running this job could not be reached. */
1056
+ 502: {
1057
+ headers: {
1058
+ [name: string]: unknown;
1059
+ };
1060
+ content?: never;
1061
+ };
1062
+ };
1063
+ };
1064
+ put?: never;
1065
+ post?: never;
1066
+ delete?: never;
1067
+ options?: never;
1068
+ head?: never;
1069
+ patch?: never;
1070
+ trace?: never;
1071
+ };
1072
+ "/jobs/{address}/node/job-definition": {
1073
+ parameters: {
1074
+ query?: never;
1075
+ header?: never;
1076
+ path?: never;
1077
+ cookie?: never;
1078
+ };
1079
+ /**
1080
+ * Get the job definition
1081
+ * @description The job definition. Fails while the job still waits for one. The node labels the body as text, but it is JSON. Signed on your behalf; only jobs you posted are reachable — anything else answers 404.
1082
+ */
1083
+ get: {
1084
+ parameters: {
1085
+ query?: never;
1086
+ header?: never;
1087
+ path: {
1088
+ /** @description Job address */
1089
+ address: string;
1090
+ };
1091
+ cookie?: never;
1092
+ };
1093
+ requestBody?: never;
1094
+ responses: {
1095
+ /** @description The job definition. */
1096
+ 200: {
1097
+ headers: {
1098
+ [name: string]: unknown;
1099
+ };
1100
+ content: {
1101
+ "application/json": components["schemas"]["JobDefinition"];
1102
+ };
1103
+ };
1104
+ /** @description No job with that address, or the caller does not own it. */
1105
+ 404: {
1106
+ headers: {
1107
+ [name: string]: unknown;
1108
+ };
1109
+ content?: never;
1110
+ };
1111
+ /** @description This job has not been picked up by a node yet. */
1112
+ 409: {
1113
+ headers: {
1114
+ [name: string]: unknown;
1115
+ };
1116
+ content?: never;
1117
+ };
1118
+ /** @description The indexer or the node running this job could not be reached. */
1119
+ 502: {
1120
+ headers: {
1121
+ [name: string]: unknown;
1122
+ };
1123
+ content?: never;
1124
+ };
1125
+ };
1126
+ };
1127
+ put?: never;
1128
+ post?: never;
1129
+ delete?: never;
1130
+ options?: never;
1131
+ head?: never;
1132
+ patch?: never;
1133
+ trace?: never;
1134
+ };
1135
+ "/jobs/{address}/node/endpoints": {
1136
+ parameters: {
1137
+ query?: never;
1138
+ header?: never;
1139
+ path?: never;
1140
+ cookie?: never;
1141
+ };
1142
+ /**
1143
+ * Exposed endpoints
1144
+ * @description The URLs the job exposes and whether they answer yet. Signed on your behalf; only jobs you posted are reachable — anything else answers 404.
1145
+ */
1146
+ get: {
1147
+ parameters: {
1148
+ query?: never;
1149
+ header?: never;
1150
+ path: {
1151
+ /** @description Job address */
1152
+ address: string;
1153
+ };
1154
+ cookie?: never;
1155
+ };
1156
+ requestBody?: never;
1157
+ responses: {
1158
+ /** @description Endpoints and their status. */
1159
+ 200: {
1160
+ headers: {
1161
+ [name: string]: unknown;
1162
+ };
1163
+ content: {
1164
+ "application/json": components["schemas"]["JobEndpoints"];
1165
+ };
1166
+ };
1167
+ /** @description No job with that address, or the caller does not own it. */
1168
+ 404: {
1169
+ headers: {
1170
+ [name: string]: unknown;
1171
+ };
1172
+ content?: never;
1173
+ };
1174
+ /** @description This job has not been picked up by a node yet. */
1175
+ 409: {
1176
+ headers: {
1177
+ [name: string]: unknown;
1178
+ };
1179
+ content?: never;
1180
+ };
1181
+ /** @description The indexer or the node running this job could not be reached. */
1182
+ 502: {
1183
+ headers: {
1184
+ [name: string]: unknown;
1185
+ };
1186
+ content?: never;
1187
+ };
1188
+ };
1189
+ };
1190
+ put?: never;
1191
+ post?: never;
1192
+ delete?: never;
1193
+ options?: never;
1194
+ head?: never;
1195
+ patch?: never;
1196
+ trace?: never;
1197
+ };
1198
+ "/jobs/{address}/node/stats": {
1199
+ parameters: {
1200
+ query?: never;
1201
+ header?: never;
1202
+ path?: never;
1203
+ cookie?: never;
1204
+ };
1205
+ /**
1206
+ * Resource stats
1207
+ * @description CPU, memory, disk and network samples per operation within a time window. Signed on your behalf; only jobs you posted are reachable — anything else answers 404.
1208
+ */
1209
+ get: {
1210
+ parameters: {
1211
+ query?: never;
1212
+ header?: never;
1213
+ path: {
1214
+ /** @description Job address */
1215
+ address: string;
1216
+ };
1217
+ cookie?: never;
1218
+ };
1219
+ requestBody?: never;
1220
+ responses: {
1221
+ /** @description Samples, oldest first. */
1222
+ 200: {
1223
+ headers: {
1224
+ [name: string]: unknown;
1225
+ };
1226
+ content: {
1227
+ "application/json": components["schemas"]["TaskStat"][];
1228
+ };
1229
+ };
1230
+ /** @description No job with that address, or the caller does not own it. */
1231
+ 404: {
1232
+ headers: {
1233
+ [name: string]: unknown;
1234
+ };
1235
+ content?: never;
1236
+ };
1237
+ /** @description This job has not been picked up by a node yet. */
1238
+ 409: {
1239
+ headers: {
1240
+ [name: string]: unknown;
1241
+ };
1242
+ content?: never;
1243
+ };
1244
+ /** @description The indexer or the node running this job could not be reached. */
1245
+ 502: {
1246
+ headers: {
1247
+ [name: string]: unknown;
1248
+ };
1249
+ content?: never;
1250
+ };
1251
+ };
1252
+ };
1253
+ put?: never;
1254
+ post?: never;
1255
+ delete?: never;
1256
+ options?: never;
1257
+ head?: never;
1258
+ patch?: never;
1259
+ trace?: never;
1260
+ };
1261
+ "/jobs/{address}/node/ops": {
1262
+ parameters: {
1263
+ query?: never;
1264
+ header?: never;
1265
+ path?: never;
1266
+ cookie?: never;
1267
+ };
1268
+ /**
1269
+ * Operation statuses
1270
+ * @description Status of every operation of the job. Signed on your behalf; only jobs you posted are reachable — anything else answers 404.
1271
+ */
1272
+ get: {
1273
+ parameters: {
1274
+ query?: never;
1275
+ header?: never;
1276
+ path: {
1277
+ /** @description Job address */
1278
+ address: string;
1279
+ };
1280
+ cookie?: never;
1281
+ };
1282
+ requestBody?: never;
1283
+ responses: {
1284
+ /** @description Statuses by operation id. */
1285
+ 200: {
1286
+ headers: {
1287
+ [name: string]: unknown;
1288
+ };
1289
+ content: {
1290
+ "application/json": components["schemas"]["OperationStatuses"];
1291
+ };
1292
+ };
1293
+ /** @description No job with that address, or the caller does not own it. */
1294
+ 404: {
1295
+ headers: {
1296
+ [name: string]: unknown;
1297
+ };
1298
+ content?: never;
1299
+ };
1300
+ /** @description This job has not been picked up by a node yet. */
1301
+ 409: {
1302
+ headers: {
1303
+ [name: string]: unknown;
1304
+ };
1305
+ content?: never;
1306
+ };
1307
+ /** @description The indexer or the node running this job could not be reached. */
1308
+ 502: {
1309
+ headers: {
1310
+ [name: string]: unknown;
1311
+ };
1312
+ content?: never;
1313
+ };
1314
+ };
1315
+ };
1316
+ put?: never;
1317
+ post?: never;
1318
+ delete?: never;
1319
+ options?: never;
1320
+ head?: never;
1321
+ patch?: never;
1322
+ trace?: never;
1323
+ };
1324
+ "/jobs/{address}/node/ops/{opId}": {
1325
+ parameters: {
1326
+ query?: never;
1327
+ header?: never;
1328
+ path?: never;
1329
+ cookie?: never;
1330
+ };
1331
+ /**
1332
+ * Operation status
1333
+ * @description Status of one operation. Signed on your behalf; only jobs you posted are reachable — anything else answers 404.
1334
+ */
1335
+ get: {
1336
+ parameters: {
1337
+ query?: never;
1338
+ header?: never;
1339
+ path: {
1340
+ /** @description Job address */
1341
+ address: string;
1342
+ /** @description An operation id within the job definition. */
1343
+ opId: string;
1344
+ };
1345
+ cookie?: never;
1346
+ };
1347
+ requestBody?: never;
1348
+ responses: {
1349
+ /** @description The operation's status. */
1350
+ 200: {
1351
+ headers: {
1352
+ [name: string]: unknown;
1353
+ };
1354
+ content: {
1355
+ "application/json": string;
1356
+ };
1357
+ };
1358
+ /** @description No job with that address, or the caller does not own it. */
1359
+ 404: {
1360
+ headers: {
1361
+ [name: string]: unknown;
1362
+ };
1363
+ content?: never;
1364
+ };
1365
+ /** @description This job has not been picked up by a node yet. */
1366
+ 409: {
1367
+ headers: {
1368
+ [name: string]: unknown;
1369
+ };
1370
+ content?: never;
1371
+ };
1372
+ /** @description The indexer or the node running this job could not be reached. */
1373
+ 502: {
1374
+ headers: {
1375
+ [name: string]: unknown;
1376
+ };
1377
+ content?: never;
1378
+ };
1379
+ };
1380
+ };
1381
+ put?: never;
1382
+ post?: never;
1383
+ delete?: never;
1384
+ options?: never;
1385
+ head?: never;
1386
+ patch?: never;
1387
+ trace?: never;
1388
+ };
1389
+ "/jobs/{address}/node/group/current": {
1390
+ parameters: {
1391
+ query?: never;
1392
+ header?: never;
1393
+ path?: never;
1394
+ cookie?: never;
1395
+ };
1396
+ /**
1397
+ * Current group statuses
1398
+ * @description Status of the operations in the group currently running. Signed on your behalf; only jobs you posted are reachable — anything else answers 404.
1399
+ */
1400
+ get: {
1401
+ parameters: {
1402
+ query?: never;
1403
+ header?: never;
1404
+ path: {
1405
+ /** @description Job address */
1406
+ address: string;
1407
+ };
1408
+ cookie?: never;
1409
+ };
1410
+ requestBody?: never;
1411
+ responses: {
1412
+ /** @description Statuses by operation id. */
1413
+ 200: {
1414
+ headers: {
1415
+ [name: string]: unknown;
1416
+ };
1417
+ content: {
1418
+ "application/json": components["schemas"]["OperationStatuses"];
1419
+ };
1420
+ };
1421
+ /** @description No job with that address, or the caller does not own it. */
1422
+ 404: {
1423
+ headers: {
1424
+ [name: string]: unknown;
1425
+ };
1426
+ content?: never;
1427
+ };
1428
+ /** @description This job has not been picked up by a node yet. */
1429
+ 409: {
1430
+ headers: {
1431
+ [name: string]: unknown;
1432
+ };
1433
+ content?: never;
1434
+ };
1435
+ /** @description The indexer or the node running this job could not be reached. */
1436
+ 502: {
1437
+ headers: {
1438
+ [name: string]: unknown;
1439
+ };
1440
+ content?: never;
1441
+ };
1442
+ };
1443
+ };
1444
+ put?: never;
1445
+ post?: never;
1446
+ delete?: never;
1447
+ options?: never;
1448
+ head?: never;
1449
+ patch?: never;
1450
+ trace?: never;
1451
+ };
1452
+ "/jobs/{address}/node/group/{group}": {
1453
+ parameters: {
1454
+ query?: never;
1455
+ header?: never;
1456
+ path?: never;
1457
+ cookie?: never;
1458
+ };
1459
+ /**
1460
+ * Group statuses
1461
+ * @description Status of the operations in one group. Signed on your behalf; only jobs you posted are reachable — anything else answers 404.
1462
+ */
1463
+ get: {
1464
+ parameters: {
1465
+ query?: never;
1466
+ header?: never;
1467
+ path: {
1468
+ /** @description Job address */
1469
+ address: string;
1470
+ /** @description A group name within the job definition. */
1471
+ group: string;
1472
+ };
1473
+ cookie?: never;
1474
+ };
1475
+ requestBody?: never;
1476
+ responses: {
1477
+ /** @description Statuses by operation id. */
1478
+ 200: {
1479
+ headers: {
1480
+ [name: string]: unknown;
1481
+ };
1482
+ content: {
1483
+ "application/json": components["schemas"]["OperationStatuses"];
1484
+ };
1485
+ };
1486
+ /** @description No job with that address, or the caller does not own it. */
1487
+ 404: {
1488
+ headers: {
1489
+ [name: string]: unknown;
1490
+ };
1491
+ content?: never;
1492
+ };
1493
+ /** @description This job has not been picked up by a node yet. */
1494
+ 409: {
1495
+ headers: {
1496
+ [name: string]: unknown;
1497
+ };
1498
+ content?: never;
1499
+ };
1500
+ /** @description The indexer or the node running this job could not be reached. */
1501
+ 502: {
1502
+ headers: {
1503
+ [name: string]: unknown;
1504
+ };
1505
+ content?: never;
1506
+ };
1507
+ };
1508
+ };
1509
+ put?: never;
1510
+ post?: never;
1511
+ delete?: never;
1512
+ options?: never;
1513
+ head?: never;
1514
+ patch?: never;
1515
+ trace?: never;
1516
+ };
1517
+ }
1518
+ export type webhooks = Record<string, never>;
1519
+ export interface components {
1520
+ schemas: {
1521
+ /**
1522
+ * @description Machine-readable idempotency control code. Branch on this, not the HTTP status alone. IN_PROGRESS → retry the SAME key; EXPIRED → mint a fresh key and re-post; PAYLOAD_MISMATCH → key reused with a different payload, do not retry.
1523
+ * @enum {string}
1524
+ */
1525
+ IdempotencyCode: "IDEMPOTENCY_KEY_PAYLOAD_MISMATCH" | "IDEMPOTENCY_KEY_EXPIRED" | "IDEMPOTENCY_KEY_IN_PROGRESS";
1526
+ /** @description Idempotency control response. Branch on `code`, never on the HTTP status. */
1527
+ IdempotencyError: {
1528
+ code?: components["schemas"]["IdempotencyCode"];
1529
+ message: string;
1530
+ /** @description Seconds to wait before retrying the SAME key. Present for IDEMPOTENCY_KEY_IN_PROGRESS; mirrors the Retry-After header. */
1531
+ retryAfter?: number;
1532
+ };
1533
+ /** @description Ordinary business error. Has no `code` field (unlike IdempotencyError). */
1534
+ JobError: {
1535
+ message: string;
1536
+ };
1537
+ CreateJobWithCreditsResponse: {
1538
+ tx: string;
1539
+ job: string;
1540
+ run: string;
1541
+ credits: {
1542
+ costUSD: number;
1543
+ creditsUsed: number;
1544
+ reservationId: string;
1545
+ project: string;
1546
+ };
1547
+ };
1548
+ ExtendJobWithCreditsResponse: {
1549
+ tx: (string | null) | null;
1550
+ job: string;
1551
+ credits?: {
1552
+ costUSD: number;
1553
+ creditsUsed: number;
1554
+ reservationId: string;
1555
+ };
1556
+ };
1557
+ StopJobWithCreditsResponse: {
1558
+ tx: (string | null) | null;
1559
+ job: string;
1560
+ delisted: boolean;
1561
+ outcome?: "delisted" | "ended" | "already_terminal";
1562
+ };
1563
+ JobsBatchResponse: {
1564
+ items: {
1565
+ index: number;
1566
+ status: "confirmed" | "expired";
1567
+ job?: string;
1568
+ run?: string;
1569
+ /** @description On-chain transaction signature (base58). */
1570
+ tx?: string;
1571
+ }[];
1572
+ };
1573
+ JobDefinition: {
1574
+ /** @constant */
1575
+ version: "0.1";
1576
+ /** @constant */
1577
+ type: "container";
1578
+ logistics?: components["schemas"]["Logistics"];
1579
+ deployment_id?: string;
1580
+ ssh?: components["schemas"]["SSH"];
1581
+ meta?: components["schemas"]["Meta"];
1582
+ global?: components["schemas"]["Global"];
1583
+ ops: components["schemas"]["Ops"];
1584
+ };
1585
+ Logistics: {
1586
+ send: components["schemas"]["Logistic"];
1587
+ receive: components["schemas"]["Logistic"];
1588
+ };
1589
+ Logistic: {
1590
+ type: components["schemas"]["LogisticType"];
1591
+ args: components["schemas"]["Partial__type"];
1592
+ };
1593
+ /**
1594
+ * @description api - we receive and send via an endpoint endpoint
1595
+ * api-listen - we create an endpoint to listen for incoming requests
1596
+ */
1597
+ LogisticType: "api" | "api-listen";
1598
+ /** @description Make all properties in T optional */
1599
+ Partial__type: {
1600
+ endpoint?: string;
1601
+ };
1602
+ SSH: {
1603
+ public_keys?: string[];
1604
+ };
1605
+ Meta: {
1606
+ trigger?: string;
1607
+ system_resources?: components["schemas"]["Recordstringstringnumber"];
1608
+ } & {
1609
+ [key: string]: string | number | (string | number)[] | components["schemas"]["Recordstringstringnumber_stringnumber_"];
1610
+ };
1611
+ /** @description Construct a type with a set of properties K of type T */
1612
+ Recordstringstringnumber: {
1613
+ [key: string]: string | number;
1614
+ };
1615
+ /** @description Construct a type with a set of properties K of type T */
1616
+ Recordstringstringnumber_stringnumber_: {
1617
+ [key: string]: string | number | (string | number)[];
1618
+ };
1619
+ Global: {
1620
+ image?: string;
1621
+ gpu?: boolean;
1622
+ entrypoint?: string | components["schemas"]["CMDArray"];
1623
+ env?: components["schemas"]["Env"];
1624
+ work_dir?: string;
1625
+ variables?: components["schemas"]["Variables"];
1626
+ };
1627
+ CMDArray: string[];
1628
+ Env: {
1629
+ [key: string]: string;
1630
+ };
1631
+ Variables: {
1632
+ [key: string]: string;
1633
+ };
1634
+ Ops: components["schemas"]["OperationkeyofOperationArgsMap"][];
1635
+ OperationkeyofOperationArgsMap: {
1636
+ type: "container/run" | "container/create-volume";
1637
+ id: components["schemas"]["OperationId"];
1638
+ args: components["schemas"]["ContainerRun"] | components["schemas"]["ContainerCreateVolume"];
1639
+ results?: components["schemas"]["OperationResults"];
1640
+ execution?: components["schemas"]["Execution"];
1641
+ };
1642
+ OperationId: string;
1643
+ ContainerRun: {
1644
+ image: string;
1645
+ aliases?: string | components["schemas"]["Aliases"];
1646
+ cmd?: string | components["schemas"]["CMDArray"];
1647
+ volumes?: components["schemas"]["Volume"][];
1648
+ expose?: number | components["schemas"]["LiteralString"] | {
1649
+ __spread__: components["schemas"]["LiteralString"];
1650
+ chunked?: boolean;
1651
+ } | components["schemas"]["ExposedPort"] | components["schemas"]["UniqueExposedPorts"];
1652
+ gpu?: boolean;
1653
+ work_dir?: string;
1654
+ entrypoint?: string | components["schemas"]["CMDArray"];
1655
+ env?: components["schemas"]["Env"];
1656
+ restart_policy?: "on-failure" | "no" | "always" | "unless-stopped" | {
1657
+ /** @constant */
1658
+ policy: "on-failure";
1659
+ restart_tries?: number;
1660
+ };
1661
+ private?: boolean;
1662
+ resources?: components["schemas"]["Resources"];
1663
+ authentication?: components["schemas"]["Authentication"];
1664
+ };
1665
+ Aliases: string[];
1666
+ Volume: {
1667
+ name: string;
1668
+ dest: string;
1669
+ };
1670
+ LiteralString: string;
1671
+ ExposedPort: {
1672
+ port: number;
1673
+ type?: "api" | "web" | "websocket" | "webapi" | "none";
1674
+ health_checks?: components["schemas"]["HealthCheck"][];
1675
+ };
1676
+ HealthCheck: components["schemas"]["HttpHealthCheck"] | components["schemas"]["WebSocketHealthCheck"];
1677
+ HttpHealthCheck: {
1678
+ /** @constant */
1679
+ type: "http";
1680
+ path: string;
1681
+ method: "GET" | "POST" | "PUT" | "DELETE";
1682
+ expected_status: number;
1683
+ headers?: components["schemas"]["Recordstringstring"];
1684
+ body?: unknown;
1685
+ continuous: boolean;
1686
+ };
1687
+ /** @description Construct a type with a set of properties K of type T */
1688
+ Recordstringstring: {
1689
+ [key: string]: string;
1690
+ };
1691
+ WebSocketHealthCheck: {
1692
+ /** @constant */
1693
+ type: "websocket";
1694
+ expected_response: string;
1695
+ continuous: boolean;
1696
+ };
1697
+ UniqueExposedPorts: components["schemas"]["ExposeBase"][];
1698
+ ExposeBase: number | components["schemas"]["LiteralString"] | {
1699
+ __spread__: components["schemas"]["LiteralString"];
1700
+ chunked?: boolean;
1701
+ } | components["schemas"]["ExposedPort"];
1702
+ Resources: ("__remove-if-empty__" | {
1703
+ __spread__: components["schemas"]["LiteralString"];
1704
+ chunked?: boolean;
1705
+ } | components["schemas"]["S3Base"] | components["schemas"]["S3WithBucket"] | components["schemas"]["S3WithBuckets"] | components["schemas"]["HFResource"] | components["schemas"]["OllamaResource"])[];
1706
+ S3Base: {
1707
+ /** @constant */
1708
+ type: "S3";
1709
+ target: string;
1710
+ url?: string;
1711
+ allowWrite?: boolean;
1712
+ files?: string[];
1713
+ IAM?: components["schemas"]["S3Auth"];
1714
+ };
1715
+ S3Auth: {
1716
+ REGION: string;
1717
+ ACCESS_KEY_ID: string;
1718
+ SECRET_ACCESS_KEY: string;
1719
+ };
1720
+ S3WithBucket: {
1721
+ /** @constant */
1722
+ type: "S3";
1723
+ target: string;
1724
+ bucket: string;
1725
+ url?: string;
1726
+ allowWrite?: boolean;
1727
+ IAM?: components["schemas"]["S3Auth"];
1728
+ };
1729
+ S3WithBuckets: {
1730
+ /** @constant */
1731
+ type: "S3";
1732
+ target: string;
1733
+ buckets: {
1734
+ url: string;
1735
+ files?: string[];
1736
+ }[];
1737
+ url?: string;
1738
+ allowWrite?: boolean;
1739
+ IAM?: components["schemas"]["S3Auth"];
1740
+ };
1741
+ HFResource: {
1742
+ /** @constant */
1743
+ type: "HF";
1744
+ target: string;
1745
+ repo: string;
1746
+ revision?: string;
1747
+ files?: string[];
1748
+ accessToken?: string;
1749
+ };
1750
+ OllamaResource: {
1751
+ /** @constant */
1752
+ type: "Ollama";
1753
+ model: string;
1754
+ target?: string;
1755
+ };
1756
+ Authentication: {
1757
+ docker?: components["schemas"]["DockerAuth"];
1758
+ };
1759
+ DockerAuth: {
1760
+ username?: string;
1761
+ password?: string;
1762
+ email?: string;
1763
+ server?: string;
1764
+ };
1765
+ ContainerCreateVolume: {
1766
+ name: string;
1767
+ };
1768
+ OperationResults: {
1769
+ [key: string]: string | components["schemas"]["OperationResult"];
1770
+ };
1771
+ OperationResult: {
1772
+ regex: string;
1773
+ logType: components["schemas"]["LogTypeTuple"];
1774
+ };
1775
+ LogTypeTuple: components["schemas"]["StdOption"][];
1776
+ StdOption: "stdin" | "stdout" | "stderr" | "nodeerr";
1777
+ Execution: {
1778
+ group?: string;
1779
+ timeout?: number;
1780
+ depends_on?: string[];
1781
+ stop_if_dependent_stops?: boolean;
1782
+ };
1783
+ FlowState: {
1784
+ status: string;
1785
+ startTime: number;
1786
+ endTime: null | number;
1787
+ errors?: unknown[];
1788
+ opStates: components["schemas"]["OpState"][];
1789
+ secrets?: components["schemas"]["FlowSecrets"];
1790
+ };
1791
+ OpState: {
1792
+ providerId: null | string;
1793
+ operationId: null | string;
1794
+ group: null | string;
1795
+ status: null | string;
1796
+ startTime: null | number;
1797
+ endTime: null | number;
1798
+ exitCode: null | number;
1799
+ logs: components["schemas"]["Log"][];
1800
+ results?: {
1801
+ [key: string]: string | string[];
1802
+ };
1803
+ error?: {
1804
+ event: string;
1805
+ message: string;
1806
+ code?: number;
1807
+ };
1808
+ diagnostics: {
1809
+ reason: components["schemas"]["DiagnosticsReason"];
1810
+ state?: components["schemas"]["DiagnosticsState"];
1811
+ };
1812
+ };
1813
+ Log: {
1814
+ type: components["schemas"]["StdOption"];
1815
+ log?: string;
1816
+ timestamp: string;
1817
+ };
1818
+ DiagnosticsReason: {
1819
+ hostShutDown: boolean;
1820
+ jobStopped: boolean;
1821
+ jobExpired: boolean;
1822
+ reason?: string;
1823
+ };
1824
+ DiagnosticsState: {
1825
+ Status: string;
1826
+ Running: boolean;
1827
+ Paused: boolean;
1828
+ Restarting: boolean;
1829
+ OOMKilled: boolean;
1830
+ Dead: boolean;
1831
+ Pid: number;
1832
+ ExitCode: number;
1833
+ Error: string;
1834
+ StartedAt: string;
1835
+ FinishedAt: string;
1836
+ Health?: {
1837
+ Status: string;
1838
+ FailingStreak: number;
1839
+ Log: null | {
1840
+ Start: string;
1841
+ End: string;
1842
+ ExitCode: number;
1843
+ Output: string;
1844
+ }[];
1845
+ };
1846
+ RestartCount: number;
1847
+ };
1848
+ FlowSecrets: {
1849
+ urlmode?: "private" | "public";
1850
+ } & {
1851
+ [key: string]: "private" | "public" | components["schemas"]["JobExposeSecrets"];
1852
+ };
1853
+ JobExposeSecrets: {
1854
+ [key: string]: components["schemas"]["EndpointSecret"];
1855
+ };
1856
+ EndpointSecret: {
1857
+ opID: string;
1858
+ port: string | number;
1859
+ url: string;
1860
+ status: components["schemas"]["EndpointStatus"];
1861
+ };
1862
+ EndpointStatus: "ONLINE" | "OFFLINE" | "UNKNOWN";
1863
+ /** @description A Solana address in base58. */
1864
+ Address: string;
1865
+ /** @description The node answers failures with a sentence or with `{ error }`. */
1866
+ NodeError: string | {
1867
+ error: string;
1868
+ };
1869
+ NodeInfo: {
1870
+ /** @description What the node is doing right now, as classified by its monitor. */
1871
+ state: string;
1872
+ info: {
1873
+ gpus?: {
1874
+ devices?: ({
1875
+ index?: number;
1876
+ name?: string;
1877
+ uuid?: string;
1878
+ memory?: unknown;
1879
+ network_architecture?: unknown;
1880
+ } & {
1881
+ [key: string]: unknown;
1882
+ })[];
1883
+ } & {
1884
+ [key: string]: unknown;
1885
+ };
1886
+ /** @description Network details with the IP address redacted. */
1887
+ network?: {
1888
+ [key: string]: unknown;
1889
+ };
1890
+ } & {
1891
+ [key: string]: unknown;
1892
+ };
1893
+ resources: {
1894
+ images: string[];
1895
+ volumes: string[];
1896
+ };
1897
+ } & {
1898
+ [key: string]: unknown;
1899
+ };
1900
+ /** @description An operation's state as the info stream sends it: `OpState` without its logs and provider handle. */
1901
+ OpStateSummary: {
1902
+ operationId?: string | null;
1903
+ group?: string | null;
1904
+ status?: string | null;
1905
+ startTime?: number | null;
1906
+ endTime?: number | null;
1907
+ exitCode?: number | null;
1908
+ results?: {
1909
+ [key: string]: string | string[];
1910
+ };
1911
+ error?: {
1912
+ event: string;
1913
+ message: string;
1914
+ code?: number;
1915
+ };
1916
+ diagnostics?: {
1917
+ reason: components["schemas"]["DiagnosticsReason"];
1918
+ state?: components["schemas"]["DiagnosticsState"];
1919
+ };
1920
+ };
1921
+ /** @description Status per operation, keyed by operation id. */
1922
+ OperationStatuses: {
1923
+ [key: string]: string | null;
1924
+ };
1925
+ /** @description One frame of the job info stream: the flow without logs, plus task status. */
1926
+ JobInfo: {
1927
+ status: string;
1928
+ startTime: number;
1929
+ endTime: number | null;
1930
+ errors: unknown[];
1931
+ opStates: components["schemas"]["OpStateSummary"][];
1932
+ secrets?: components["schemas"]["FlowSecrets"];
1933
+ operations: {
1934
+ all: components["schemas"]["OperationStatuses"] | null;
1935
+ currentGroup?: string;
1936
+ currentGroupStatus: components["schemas"]["OperationStatuses"] | null;
1937
+ } | null;
1938
+ };
1939
+ JobEndpoints: {
1940
+ urls: components["schemas"]["JobExposeSecrets"];
1941
+ /** @enum {string} */
1942
+ status: "ONLINE" | "OFFLINE";
1943
+ };
1944
+ TaskStat: {
1945
+ opId: string;
1946
+ /** @description Unix milliseconds. */
1947
+ timestamp: number;
1948
+ cpu: {
1949
+ cpu_percent: number;
1950
+ };
1951
+ memory: {
1952
+ memory_usage: number;
1953
+ memory_limit: number;
1954
+ memory_percent: number;
1955
+ };
1956
+ disk: {
1957
+ read: number;
1958
+ write: number;
1959
+ };
1960
+ network: {
1961
+ received: number;
1962
+ sent: number;
1963
+ };
1964
+ };
1965
+ TaskLog: {
1966
+ opId: string;
1967
+ group: string;
1968
+ type: string;
1969
+ timestamp: number;
1970
+ message: unknown;
1971
+ };
1972
+ ActionResult: {
1973
+ message: string;
1974
+ };
1975
+ /** @description One OpenSSH `authorized_keys` line: algorithm, base64 key material and an optional comment. */
1976
+ SshPublicKey: string;
1977
+ SshAuthorizationRequest: {
1978
+ sshPublicKey: components["schemas"]["SshPublicKey"];
1979
+ /**
1980
+ * Format: date-time
1981
+ * @description Omit for access until the key is revoked or the job ends.
1982
+ */
1983
+ expiresAt?: string;
1984
+ };
1985
+ SshAuthorization: {
1986
+ job: components["schemas"]["Address"];
1987
+ /** @description Always `nosana`; the hostname identifies the job and operation. */
1988
+ sshUser: string;
1989
+ /** @constant */
1990
+ authorized: true;
1991
+ /** Format: date-time */
1992
+ expiresAt?: string;
1993
+ };
1994
+ SshAuthorizedKey: {
1995
+ sshPublicKey: components["schemas"]["SshPublicKey"];
1996
+ /**
1997
+ * Format: date-time
1998
+ * @description Absent for permanent keys.
1999
+ */
2000
+ expiresAt?: string;
2001
+ };
2002
+ SshKeys: {
2003
+ job: components["schemas"]["Address"];
2004
+ sshUser: string;
2005
+ keys: components["schemas"]["SshAuthorizedKey"][];
2006
+ };
2007
+ SshRevocationRequest: {
2008
+ sshPublicKey: components["schemas"]["SshPublicKey"];
2009
+ };
2010
+ SshRevocation: {
2011
+ job: components["schemas"]["Address"];
2012
+ sshUser: string;
2013
+ /** @constant */
2014
+ revoked: true;
2015
+ };
2016
+ };
2017
+ responses: never;
2018
+ parameters: never;
2019
+ requestBodies: never;
2020
+ headers: never;
2021
+ pathItems: never;
2022
+ }
2023
+ export type $defs = Record<string, never>;
2024
+ export interface operations {
2025
+ getIndex: {
2026
+ parameters: {
2027
+ query?: never;
2028
+ header?: never;
2029
+ path?: never;
2030
+ cookie?: never;
2031
+ };
2032
+ requestBody?: never;
2033
+ responses: {
2034
+ 200: {
2035
+ headers: {
2036
+ [name: string]: unknown;
2037
+ };
2038
+ content?: never;
2039
+ };
2040
+ };
2041
+ };
2042
+ "postAuthValidate-session": {
2043
+ parameters: {
2044
+ query?: never;
2045
+ header?: never;
2046
+ path?: never;
2047
+ cookie?: never;
2048
+ };
2049
+ requestBody: {
772
2050
  content: {
773
2051
  "application/json": {
774
2052
  cookieHeader?: string;
@@ -887,11 +2165,11 @@ export interface operations {
887
2165
  provider: (string | null) | null;
888
2166
  providerUsername: (string | null) | null;
889
2167
  generatedAddress: string;
890
- authenticationHeader: string;
891
- systemApiKey: string;
892
2168
  created_at: ((Record<string, never> | string | number) | null) | null;
893
2169
  };
894
2170
  apiKeyId?: string;
2171
+ /** @description What the validated key is allowed to do. */
2172
+ scopes?: string[];
895
2173
  };
896
2174
  "multipart/form-data": {
897
2175
  valid: boolean;
@@ -903,11 +2181,11 @@ export interface operations {
903
2181
  provider: (string | null) | null;
904
2182
  providerUsername: (string | null) | null;
905
2183
  generatedAddress: string;
906
- authenticationHeader: string;
907
- systemApiKey: string;
908
2184
  created_at: ((Record<string, never> | string | number) | null) | null;
909
2185
  };
910
2186
  apiKeyId?: string;
2187
+ /** @description What the validated key is allowed to do. */
2188
+ scopes?: string[];
911
2189
  };
912
2190
  "text/plain": {
913
2191
  valid: boolean;
@@ -919,11 +2197,11 @@ export interface operations {
919
2197
  provider: (string | null) | null;
920
2198
  providerUsername: (string | null) | null;
921
2199
  generatedAddress: string;
922
- authenticationHeader: string;
923
- systemApiKey: string;
924
2200
  created_at: ((Record<string, never> | string | number) | null) | null;
925
2201
  };
926
2202
  apiKeyId?: string;
2203
+ /** @description What the validated key is allowed to do. */
2204
+ scopes?: string[];
927
2205
  };
928
2206
  };
929
2207
  };
@@ -1033,6 +2311,54 @@ export interface operations {
1033
2311
  };
1034
2312
  };
1035
2313
  };
2314
+ getAuthScopes: {
2315
+ parameters: {
2316
+ query?: never;
2317
+ header?: never;
2318
+ path?: never;
2319
+ cookie?: never;
2320
+ };
2321
+ requestBody?: never;
2322
+ responses: {
2323
+ 200: {
2324
+ headers: {
2325
+ [name: string]: unknown;
2326
+ };
2327
+ content: {
2328
+ "application/json": {
2329
+ scopes: {
2330
+ /** @description The scope token, e.g. `credits:read`. */
2331
+ scope: string;
2332
+ /** @description User-facing wording, as shown on the consent screen. */
2333
+ description: string;
2334
+ /** @description Whether an OAuth app may hold this scope. False for scopes whose routes accept an API key only, which no access token can satisfy. */
2335
+ oauthGrantable: boolean;
2336
+ }[];
2337
+ };
2338
+ "multipart/form-data": {
2339
+ scopes: {
2340
+ /** @description The scope token, e.g. `credits:read`. */
2341
+ scope: string;
2342
+ /** @description User-facing wording, as shown on the consent screen. */
2343
+ description: string;
2344
+ /** @description Whether an OAuth app may hold this scope. False for scopes whose routes accept an API key only, which no access token can satisfy. */
2345
+ oauthGrantable: boolean;
2346
+ }[];
2347
+ };
2348
+ "text/plain": {
2349
+ scopes: {
2350
+ /** @description The scope token, e.g. `credits:read`. */
2351
+ scope: string;
2352
+ /** @description User-facing wording, as shown on the consent screen. */
2353
+ description: string;
2354
+ /** @description Whether an OAuth app may hold this scope. False for scopes whose routes accept an API key only, which no access token can satisfy. */
2355
+ oauthGrantable: boolean;
2356
+ }[];
2357
+ };
2358
+ };
2359
+ };
2360
+ };
2361
+ };
1036
2362
  "getApi-keys": {
1037
2363
  parameters: {
1038
2364
  query?: never;
@@ -1049,11 +2375,14 @@ export interface operations {
1049
2375
  content: {
1050
2376
  "application/json": {
1051
2377
  keys: {
2378
+ llmModels: (string[] | null) | null;
1052
2379
  id: string;
1053
2380
  name: string;
1054
2381
  /** @description Full API key */
1055
2382
  key: string;
1056
2383
  status: string;
2384
+ /** @description What this key is allowed to do. */
2385
+ scopes: string[];
1057
2386
  lastUsedAt: (string | null) | null;
1058
2387
  expiresAt: (string | null) | null;
1059
2388
  createdAt: string;
@@ -1063,11 +2392,14 @@ export interface operations {
1063
2392
  };
1064
2393
  "multipart/form-data": {
1065
2394
  keys: {
2395
+ llmModels: (string[] | null) | null;
1066
2396
  id: string;
1067
2397
  name: string;
1068
2398
  /** @description Full API key */
1069
2399
  key: string;
1070
2400
  status: string;
2401
+ /** @description What this key is allowed to do. */
2402
+ scopes: string[];
1071
2403
  lastUsedAt: (string | null) | null;
1072
2404
  expiresAt: (string | null) | null;
1073
2405
  createdAt: string;
@@ -1077,11 +2409,14 @@ export interface operations {
1077
2409
  };
1078
2410
  "text/plain": {
1079
2411
  keys: {
2412
+ llmModels: (string[] | null) | null;
1080
2413
  id: string;
1081
2414
  name: string;
1082
2415
  /** @description Full API key */
1083
2416
  key: string;
1084
2417
  status: string;
2418
+ /** @description What this key is allowed to do. */
2419
+ scopes: string[];
1085
2420
  lastUsedAt: (string | null) | null;
1086
2421
  expiresAt: (string | null) | null;
1087
2422
  createdAt: string;
@@ -1103,22 +2438,31 @@ export interface operations {
1103
2438
  requestBody: {
1104
2439
  content: {
1105
2440
  "application/json": {
2441
+ llmModels?: (string[] | null) | null;
1106
2442
  /** @description A descriptive name for the API key. */
1107
2443
  name: string;
1108
2444
  /** @description Key expiration time in seconds. If not provided, key never expires. */
1109
2445
  expiresIn?: number;
2446
+ /** @description What the key may do. Must be a subset of the scopes the calling credential holds. Defaults to the caller's own scopes. */
2447
+ scopes?: string[];
1110
2448
  };
1111
2449
  "multipart/form-data": {
2450
+ llmModels?: (string[] | null) | null;
1112
2451
  /** @description A descriptive name for the API key. */
1113
2452
  name: string;
1114
2453
  /** @description Key expiration time in seconds. If not provided, key never expires. */
1115
2454
  expiresIn?: number;
2455
+ /** @description What the key may do. Must be a subset of the scopes the calling credential holds. Defaults to the caller's own scopes. */
2456
+ scopes?: string[];
1116
2457
  };
1117
2458
  "text/plain": {
2459
+ llmModels?: (string[] | null) | null;
1118
2460
  /** @description A descriptive name for the API key. */
1119
2461
  name: string;
1120
2462
  /** @description Key expiration time in seconds. If not provided, key never expires. */
1121
2463
  expiresIn?: number;
2464
+ /** @description What the key may do. Must be a subset of the scopes the calling credential holds. Defaults to the caller's own scopes. */
2465
+ scopes?: string[];
1122
2466
  };
1123
2467
  };
1124
2468
  };
@@ -1129,29 +2473,38 @@ export interface operations {
1129
2473
  };
1130
2474
  content: {
1131
2475
  "application/json": {
2476
+ llmModels: (string[] | null) | null;
1132
2477
  /** @description The full API key. */
1133
2478
  key: string;
1134
2479
  id: string;
1135
2480
  name: string;
1136
2481
  status: string;
2482
+ /** @description What this key is allowed to do. */
2483
+ scopes: string[];
1137
2484
  expiresAt: (string | null) | null;
1138
2485
  createdAt: string;
1139
2486
  };
1140
2487
  "multipart/form-data": {
2488
+ llmModels: (string[] | null) | null;
1141
2489
  /** @description The full API key. */
1142
2490
  key: string;
1143
2491
  id: string;
1144
2492
  name: string;
1145
2493
  status: string;
2494
+ /** @description What this key is allowed to do. */
2495
+ scopes: string[];
1146
2496
  expiresAt: (string | null) | null;
1147
2497
  createdAt: string;
1148
2498
  };
1149
2499
  "text/plain": {
2500
+ llmModels: (string[] | null) | null;
1150
2501
  /** @description The full API key. */
1151
2502
  key: string;
1152
2503
  id: string;
1153
2504
  name: string;
1154
2505
  status: string;
2506
+ /** @description What this key is allowed to do. */
2507
+ scopes: string[];
1155
2508
  expiresAt: (string | null) | null;
1156
2509
  createdAt: string;
1157
2510
  };
@@ -1176,33 +2529,42 @@ export interface operations {
1176
2529
  };
1177
2530
  content: {
1178
2531
  "application/json": {
2532
+ llmModels: (string[] | null) | null;
1179
2533
  id: string;
1180
2534
  name: string;
1181
2535
  /** @description Full API key */
1182
2536
  key: string;
1183
2537
  status: string;
2538
+ /** @description What this key is allowed to do. */
2539
+ scopes: string[];
1184
2540
  lastUsedAt: (string | null) | null;
1185
2541
  expiresAt: (string | null) | null;
1186
2542
  createdAt: string;
1187
2543
  updatedAt: string;
1188
2544
  };
1189
2545
  "multipart/form-data": {
2546
+ llmModels: (string[] | null) | null;
1190
2547
  id: string;
1191
2548
  name: string;
1192
2549
  /** @description Full API key */
1193
2550
  key: string;
1194
2551
  status: string;
2552
+ /** @description What this key is allowed to do. */
2553
+ scopes: string[];
1195
2554
  lastUsedAt: (string | null) | null;
1196
2555
  expiresAt: (string | null) | null;
1197
2556
  createdAt: string;
1198
2557
  updatedAt: string;
1199
2558
  };
1200
2559
  "text/plain": {
2560
+ llmModels: (string[] | null) | null;
1201
2561
  id: string;
1202
2562
  name: string;
1203
2563
  /** @description Full API key */
1204
2564
  key: string;
1205
2565
  status: string;
2566
+ /** @description What this key is allowed to do. */
2567
+ scopes: string[];
1206
2568
  lastUsedAt: (string | null) | null;
1207
2569
  expiresAt: (string | null) | null;
1208
2570
  createdAt: string;
@@ -1224,18 +2586,21 @@ export interface operations {
1224
2586
  requestBody: {
1225
2587
  content: {
1226
2588
  "application/json": {
2589
+ llmModels?: (string[] | null) | null;
1227
2590
  /** @description Update the key name. */
1228
2591
  name?: string;
1229
2592
  /** @description Update the key status. */
1230
2593
  status?: "active" | "disabled";
1231
2594
  };
1232
2595
  "multipart/form-data": {
2596
+ llmModels?: (string[] | null) | null;
1233
2597
  /** @description Update the key name. */
1234
2598
  name?: string;
1235
2599
  /** @description Update the key status. */
1236
2600
  status?: "active" | "disabled";
1237
2601
  };
1238
2602
  "text/plain": {
2603
+ llmModels?: (string[] | null) | null;
1239
2604
  /** @description Update the key name. */
1240
2605
  name?: string;
1241
2606
  /** @description Update the key status. */
@@ -1250,33 +2615,42 @@ export interface operations {
1250
2615
  };
1251
2616
  content: {
1252
2617
  "application/json": {
2618
+ llmModels: (string[] | null) | null;
1253
2619
  id: string;
1254
2620
  name: string;
1255
2621
  /** @description Full API key */
1256
2622
  key: string;
1257
2623
  status: string;
2624
+ /** @description What this key is allowed to do. */
2625
+ scopes: string[];
1258
2626
  lastUsedAt: (string | null) | null;
1259
2627
  expiresAt: (string | null) | null;
1260
2628
  createdAt: string;
1261
2629
  updatedAt: string;
1262
2630
  };
1263
2631
  "multipart/form-data": {
2632
+ llmModels: (string[] | null) | null;
1264
2633
  id: string;
1265
2634
  name: string;
1266
2635
  /** @description Full API key */
1267
2636
  key: string;
1268
2637
  status: string;
2638
+ /** @description What this key is allowed to do. */
2639
+ scopes: string[];
1269
2640
  lastUsedAt: (string | null) | null;
1270
2641
  expiresAt: (string | null) | null;
1271
2642
  createdAt: string;
1272
2643
  updatedAt: string;
1273
2644
  };
1274
2645
  "text/plain": {
2646
+ llmModels: (string[] | null) | null;
1275
2647
  id: string;
1276
2648
  name: string;
1277
2649
  /** @description Full API key */
1278
2650
  key: string;
1279
2651
  status: string;
2652
+ /** @description What this key is allowed to do. */
2653
+ scopes: string[];
1280
2654
  lastUsedAt: (string | null) | null;
1281
2655
  expiresAt: (string | null) | null;
1282
2656
  createdAt: string;
@@ -1625,53 +2999,277 @@ export interface operations {
1625
2999
  path?: never;
1626
3000
  cookie?: never;
1627
3001
  };
1628
- requestBody?: never;
3002
+ requestBody?: never;
3003
+ responses: {
3004
+ 200: {
3005
+ headers: {
3006
+ [name: string]: unknown;
3007
+ };
3008
+ content: {
3009
+ "application/json": {
3010
+ transactions: {
3011
+ id: string;
3012
+ type: string;
3013
+ amountUsd: number;
3014
+ createdAt: string;
3015
+ method: string | null;
3016
+ }[];
3017
+ total: number;
3018
+ };
3019
+ "multipart/form-data": {
3020
+ transactions: {
3021
+ id: string;
3022
+ type: string;
3023
+ amountUsd: number;
3024
+ createdAt: string;
3025
+ method: string | null;
3026
+ }[];
3027
+ total: number;
3028
+ };
3029
+ "text/plain": {
3030
+ transactions: {
3031
+ id: string;
3032
+ type: string;
3033
+ amountUsd: number;
3034
+ createdAt: string;
3035
+ method: string | null;
3036
+ }[];
3037
+ total: number;
3038
+ };
3039
+ };
3040
+ };
3041
+ };
3042
+ };
3043
+ getCreditsInvitationsByToken: {
3044
+ parameters: {
3045
+ query?: never;
3046
+ header?: never;
3047
+ path: {
3048
+ token: string;
3049
+ };
3050
+ cookie?: never;
3051
+ };
3052
+ requestBody?: never;
3053
+ responses: {
3054
+ 200: {
3055
+ headers: {
3056
+ [name: string]: unknown;
3057
+ };
3058
+ content: {
3059
+ "application/json": {
3060
+ creditsAmount: number;
3061
+ expirationDate: (((Record<string, never> | string | number) | string) | null) | null;
3062
+ restrictedEmail: (string | null) | null;
3063
+ restrictedAccountName: (string | null) | null;
3064
+ isClaimed: boolean;
3065
+ isExpired: boolean;
3066
+ };
3067
+ "multipart/form-data": {
3068
+ creditsAmount: number;
3069
+ expirationDate: (((Record<string, never> | string | number) | string) | null) | null;
3070
+ restrictedEmail: (string | null) | null;
3071
+ restrictedAccountName: (string | null) | null;
3072
+ isClaimed: boolean;
3073
+ isExpired: boolean;
3074
+ };
3075
+ "text/plain": {
3076
+ creditsAmount: number;
3077
+ expirationDate: (((Record<string, never> | string | number) | string) | null) | null;
3078
+ restrictedEmail: (string | null) | null;
3079
+ restrictedAccountName: (string | null) | null;
3080
+ isClaimed: boolean;
3081
+ isExpired: boolean;
3082
+ };
3083
+ };
3084
+ };
3085
+ };
3086
+ };
3087
+ postCreditsInternalLlmFinalize: {
3088
+ parameters: {
3089
+ query?: never;
3090
+ header?: never;
3091
+ path?: never;
3092
+ cookie?: never;
3093
+ };
3094
+ requestBody: {
3095
+ content: {
3096
+ "application/json": {
3097
+ /** Format: uuid */
3098
+ requestId: string;
3099
+ usage: {
3100
+ promptTokens: string | number;
3101
+ completionTokens: string | number;
3102
+ costNano: string | number;
3103
+ estimated?: boolean;
3104
+ streamed?: boolean;
3105
+ status: string | number;
3106
+ };
3107
+ };
3108
+ "multipart/form-data": {
3109
+ /** Format: uuid */
3110
+ requestId: string;
3111
+ usage: {
3112
+ promptTokens: string | number;
3113
+ completionTokens: string | number;
3114
+ costNano: string | number;
3115
+ estimated?: boolean;
3116
+ streamed?: boolean;
3117
+ status: string | number;
3118
+ };
3119
+ };
3120
+ "text/plain": {
3121
+ /** Format: uuid */
3122
+ requestId: string;
3123
+ usage: {
3124
+ promptTokens: string | number;
3125
+ completionTokens: string | number;
3126
+ costNano: string | number;
3127
+ estimated?: boolean;
3128
+ streamed?: boolean;
3129
+ status: string | number;
3130
+ };
3131
+ };
3132
+ };
3133
+ };
3134
+ responses: {
3135
+ 200: {
3136
+ headers: {
3137
+ [name: string]: unknown;
3138
+ };
3139
+ content?: never;
3140
+ };
3141
+ };
3142
+ };
3143
+ getCreditsLlmUsage: {
3144
+ parameters: {
3145
+ query?: {
3146
+ limit?: string | number;
3147
+ offset?: string | number;
3148
+ };
3149
+ header?: never;
3150
+ path?: never;
3151
+ cookie?: never;
3152
+ };
3153
+ requestBody?: never;
3154
+ responses: {
3155
+ 200: {
3156
+ headers: {
3157
+ [name: string]: unknown;
3158
+ };
3159
+ content?: never;
3160
+ };
3161
+ };
3162
+ };
3163
+ getCreditsInternalLlmModels: {
3164
+ parameters: {
3165
+ query?: never;
3166
+ header?: never;
3167
+ path?: never;
3168
+ cookie?: never;
3169
+ };
3170
+ requestBody?: never;
3171
+ responses: {
3172
+ 200: {
3173
+ headers: {
3174
+ [name: string]: unknown;
3175
+ };
3176
+ content?: never;
3177
+ };
3178
+ };
3179
+ };
3180
+ getCreditsAdminLlmTemplates: {
3181
+ parameters: {
3182
+ query?: never;
3183
+ header?: never;
3184
+ path?: never;
3185
+ cookie?: never;
3186
+ };
3187
+ requestBody?: never;
3188
+ responses: {
3189
+ 200: {
3190
+ headers: {
3191
+ [name: string]: unknown;
3192
+ };
3193
+ content?: never;
3194
+ };
3195
+ };
3196
+ };
3197
+ getCreditsAdminLlmModels: {
3198
+ parameters: {
3199
+ query?: never;
3200
+ header?: never;
3201
+ path?: never;
3202
+ cookie?: never;
3203
+ };
3204
+ requestBody?: never;
3205
+ responses: {
3206
+ 200: {
3207
+ headers: {
3208
+ [name: string]: unknown;
3209
+ };
3210
+ content?: never;
3211
+ };
3212
+ };
3213
+ };
3214
+ postCreditsAdminLlmModels: {
3215
+ parameters: {
3216
+ query?: never;
3217
+ header?: never;
3218
+ path?: never;
3219
+ cookie?: never;
3220
+ };
3221
+ requestBody: {
3222
+ content: {
3223
+ "application/json": {
3224
+ templateId: string;
3225
+ sourceCommit: string;
3226
+ market: string;
3227
+ replicas: string | number;
3228
+ maxHourlyUsd?: number;
3229
+ pricing: {
3230
+ prompt: string;
3231
+ completion: string;
3232
+ };
3233
+ };
3234
+ "multipart/form-data": {
3235
+ templateId: string;
3236
+ sourceCommit: string;
3237
+ market: string;
3238
+ replicas: string | number;
3239
+ maxHourlyUsd?: number;
3240
+ pricing: {
3241
+ prompt: string;
3242
+ completion: string;
3243
+ };
3244
+ };
3245
+ "text/plain": {
3246
+ templateId: string;
3247
+ sourceCommit: string;
3248
+ market: string;
3249
+ replicas: string | number;
3250
+ maxHourlyUsd?: number;
3251
+ pricing: {
3252
+ prompt: string;
3253
+ completion: string;
3254
+ };
3255
+ };
3256
+ };
3257
+ };
1629
3258
  responses: {
1630
3259
  200: {
1631
3260
  headers: {
1632
3261
  [name: string]: unknown;
1633
3262
  };
1634
- content: {
1635
- "application/json": {
1636
- transactions: {
1637
- id: string;
1638
- type: string;
1639
- amountUsd: number;
1640
- createdAt: string;
1641
- method: string | null;
1642
- }[];
1643
- total: number;
1644
- };
1645
- "multipart/form-data": {
1646
- transactions: {
1647
- id: string;
1648
- type: string;
1649
- amountUsd: number;
1650
- createdAt: string;
1651
- method: string | null;
1652
- }[];
1653
- total: number;
1654
- };
1655
- "text/plain": {
1656
- transactions: {
1657
- id: string;
1658
- type: string;
1659
- amountUsd: number;
1660
- createdAt: string;
1661
- method: string | null;
1662
- }[];
1663
- total: number;
1664
- };
1665
- };
3263
+ content?: never;
1666
3264
  };
1667
3265
  };
1668
3266
  };
1669
- getCreditsInvitationsByToken: {
3267
+ deleteCreditsAdminLlmModelsById: {
1670
3268
  parameters: {
1671
3269
  query?: never;
1672
3270
  header?: never;
1673
3271
  path: {
1674
- token: string;
3272
+ id: string;
1675
3273
  };
1676
3274
  cookie?: never;
1677
3275
  };
@@ -1681,32 +3279,59 @@ export interface operations {
1681
3279
  headers: {
1682
3280
  [name: string]: unknown;
1683
3281
  };
1684
- content: {
1685
- "application/json": {
1686
- creditsAmount: number;
1687
- expirationDate: (((Record<string, never> | string | number) | string) | null) | null;
1688
- restrictedEmail: (string | null) | null;
1689
- restrictedAccountName: (string | null) | null;
1690
- isClaimed: boolean;
1691
- isExpired: boolean;
3282
+ content?: never;
3283
+ };
3284
+ };
3285
+ };
3286
+ patchCreditsAdminLlmModelsById: {
3287
+ parameters: {
3288
+ query?: never;
3289
+ header?: never;
3290
+ path: {
3291
+ id: string;
3292
+ };
3293
+ cookie?: never;
3294
+ };
3295
+ requestBody: {
3296
+ content: {
3297
+ "application/json": {
3298
+ enabled?: boolean;
3299
+ pricing?: {
3300
+ prompt: string;
3301
+ completion: string;
1692
3302
  };
1693
- "multipart/form-data": {
1694
- creditsAmount: number;
1695
- expirationDate: (((Record<string, never> | string | number) | string) | null) | null;
1696
- restrictedEmail: (string | null) | null;
1697
- restrictedAccountName: (string | null) | null;
1698
- isClaimed: boolean;
1699
- isExpired: boolean;
3303
+ maxHourlyUsd?: number;
3304
+ replicas?: string | number;
3305
+ market?: string;
3306
+ };
3307
+ "multipart/form-data": {
3308
+ enabled?: boolean;
3309
+ pricing?: {
3310
+ prompt: string;
3311
+ completion: string;
1700
3312
  };
1701
- "text/plain": {
1702
- creditsAmount: number;
1703
- expirationDate: (((Record<string, never> | string | number) | string) | null) | null;
1704
- restrictedEmail: (string | null) | null;
1705
- restrictedAccountName: (string | null) | null;
1706
- isClaimed: boolean;
1707
- isExpired: boolean;
3313
+ maxHourlyUsd?: number;
3314
+ replicas?: string | number;
3315
+ market?: string;
3316
+ };
3317
+ "text/plain": {
3318
+ enabled?: boolean;
3319
+ pricing?: {
3320
+ prompt: string;
3321
+ completion: string;
1708
3322
  };
3323
+ maxHourlyUsd?: number;
3324
+ replicas?: string | number;
3325
+ market?: string;
3326
+ };
3327
+ };
3328
+ };
3329
+ responses: {
3330
+ 200: {
3331
+ headers: {
3332
+ [name: string]: unknown;
1709
3333
  };
3334
+ content?: never;
1710
3335
  };
1711
3336
  };
1712
3337
  };
@@ -1930,7 +3555,7 @@ export interface operations {
1930
3555
  ipfsHash: string;
1931
3556
  /** @description Market address */
1932
3557
  market: string;
1933
- /** @description Job timeout in seconds (default: 3600) */
3558
+ /** @description Job timeout in seconds (default: 3600). Credit-paid jobs must run at least 3600 seconds; a shorter timeout returns 400. */
1934
3559
  timeout?: number;
1935
3560
  /** @description Optional node address */
1936
3561
  node?: string;
@@ -1940,7 +3565,7 @@ export interface operations {
1940
3565
  ipfsHash: string;
1941
3566
  /** @description Market address */
1942
3567
  market: string;
1943
- /** @description Job timeout in seconds (default: 3600) */
3568
+ /** @description Job timeout in seconds (default: 3600). Credit-paid jobs must run at least 3600 seconds; a shorter timeout returns 400. */
1944
3569
  timeout?: number;
1945
3570
  /** @description Optional node address */
1946
3571
  node?: string;
@@ -1950,7 +3575,7 @@ export interface operations {
1950
3575
  ipfsHash: string;
1951
3576
  /** @description Market address */
1952
3577
  market: string;
1953
- /** @description Job timeout in seconds (default: 3600) */
3578
+ /** @description Job timeout in seconds (default: 3600). Credit-paid jobs must run at least 3600 seconds; a shorter timeout returns 400. */
1954
3579
  timeout?: number;
1955
3580
  /** @description Optional node address */
1956
3581
  node?: string;
@@ -2026,7 +3651,7 @@ export interface operations {
2026
3651
  ipfsHash: string;
2027
3652
  /** @description Market address */
2028
3653
  market: string;
2029
- /** @description Job timeout in seconds (default: 3600) */
3654
+ /** @description Job timeout in seconds (default: 3600). Same 3600-second minimum as single LIST; one too-short item rejects the whole batch with 400. */
2030
3655
  timeout?: number;
2031
3656
  }[];
2032
3657
  };
@@ -2037,7 +3662,7 @@ export interface operations {
2037
3662
  ipfsHash: string;
2038
3663
  /** @description Market address */
2039
3664
  market: string;
2040
- /** @description Job timeout in seconds (default: 3600) */
3665
+ /** @description Job timeout in seconds (default: 3600). Same 3600-second minimum as single LIST; one too-short item rejects the whole batch with 400. */
2041
3666
  timeout?: number;
2042
3667
  }[];
2043
3668
  };
@@ -2048,8 +3673,111 @@ export interface operations {
2048
3673
  ipfsHash: string;
2049
3674
  /** @description Market address */
2050
3675
  market: string;
2051
- /** @description Job timeout in seconds (default: 3600) */
3676
+ /** @description Job timeout in seconds (default: 3600). Same 3600-second minimum as single LIST; one too-short item rejects the whole batch with 400. */
3677
+ timeout?: number;
3678
+ }[];
3679
+ };
3680
+ };
3681
+ };
3682
+ responses: {
3683
+ /** @description Per-item results by `index`: `confirmed` (with its job/run address and the packed tx's `tx` signature) or `expired` — re-post only the expired items under a fresh key. `tx` is absent on an already-terminal no-op (nothing was sent); items packed into the same on-chain tx share one `tx`. */
3684
+ 200: {
3685
+ headers: {
3686
+ [name: string]: unknown;
3687
+ };
3688
+ content: {
3689
+ "application/json": components["schemas"]["JobsBatchResponse"];
3690
+ };
3691
+ };
3692
+ /** @description Missing `Idempotency-Key` header (required on batch endpoints) or an otherwise invalid request. Ordinary error: no `code` field. */
3693
+ 400: {
3694
+ headers: {
3695
+ [name: string]: unknown;
3696
+ };
3697
+ content: {
3698
+ "application/json": components["schemas"]["JobError"];
3699
+ };
3700
+ };
3701
+ /** @description Caller does not own the job, or the market is not credit-eligible. Ordinary error: no `code` field. */
3702
+ 403: {
3703
+ headers: {
3704
+ [name: string]: unknown;
3705
+ };
3706
+ content: {
3707
+ "application/json": components["schemas"]["JobError"];
3708
+ };
3709
+ };
3710
+ /** @description Job, credit-job, or user not found — or an Idempotency-Key minted by a different user. Ordinary error: no `code` field. */
3711
+ 404: {
3712
+ headers: {
3713
+ [name: string]: unknown;
3714
+ };
3715
+ content: {
3716
+ "application/json": components["schemas"]["JobError"];
3717
+ };
3718
+ };
3719
+ /** @description Idempotency control signal — branch on `code` (IDEMPOTENCY_KEY_*), never on the HTTP status. IN_PROGRESS → retry the same key after Retry-After; EXPIRED → mint a fresh key; PAYLOAD_MISMATCH → do not retry. */
3720
+ 409: {
3721
+ headers: {
3722
+ /** @description Seconds to wait before retrying the same key. Sent only for IDEMPOTENCY_KEY_IN_PROGRESS. */
3723
+ "Retry-After"?: number;
3724
+ [name: string]: unknown;
3725
+ };
3726
+ content: {
3727
+ "application/json": components["schemas"]["IdempotencyError"];
3728
+ };
3729
+ };
3730
+ };
3731
+ };
3732
+ postJobsAssignBatch: {
3733
+ parameters: {
3734
+ query?: never;
3735
+ header: {
3736
+ /** @description De-duplicates retried requests sharing the same key (one key per batch). Required on batch endpoints — omitting it returns 400. */
3737
+ "Idempotency-Key": string;
3738
+ };
3739
+ path?: never;
3740
+ cookie?: never;
3741
+ };
3742
+ requestBody: {
3743
+ content: {
3744
+ "application/json": {
3745
+ /** @description Jobs to bulk-assign, each to its node */
3746
+ jobs: {
3747
+ /** @description IPFS hash of the job definition */
3748
+ ipfsHash: string;
3749
+ /** @description Market address */
3750
+ market: string;
3751
+ /** @description Job timeout in seconds (default: 3600). Same 3600-second minimum as single LIST; one too-short item rejects the whole batch with 400. */
3752
+ timeout?: number;
3753
+ /** @description Address (base58 public key) of the node to assign the job to */
3754
+ node: string;
3755
+ }[];
3756
+ };
3757
+ "multipart/form-data": {
3758
+ /** @description Jobs to bulk-assign, each to its node */
3759
+ jobs: {
3760
+ /** @description IPFS hash of the job definition */
3761
+ ipfsHash: string;
3762
+ /** @description Market address */
3763
+ market: string;
3764
+ /** @description Job timeout in seconds (default: 3600). Same 3600-second minimum as single LIST; one too-short item rejects the whole batch with 400. */
3765
+ timeout?: number;
3766
+ /** @description Address (base58 public key) of the node to assign the job to */
3767
+ node: string;
3768
+ }[];
3769
+ };
3770
+ "text/plain": {
3771
+ /** @description Jobs to bulk-assign, each to its node */
3772
+ jobs: {
3773
+ /** @description IPFS hash of the job definition */
3774
+ ipfsHash: string;
3775
+ /** @description Market address */
3776
+ market: string;
3777
+ /** @description Job timeout in seconds (default: 3600). Same 3600-second minimum as single LIST; one too-short item rejects the whole batch with 400. */
2052
3778
  timeout?: number;
3779
+ /** @description Address (base58 public key) of the node to assign the job to */
3780
+ node: string;
2053
3781
  }[];
2054
3782
  };
2055
3783
  };
@@ -2438,11 +4166,70 @@ export interface operations {
2438
4166
  email: string;
2439
4167
  };
2440
4168
  "text/plain": {
2441
- /**
2442
- * Format: email
2443
- * @description Email address to subscribe to the newsletter.
2444
- */
2445
- email: string;
4169
+ /**
4170
+ * Format: email
4171
+ * @description Email address to subscribe to the newsletter.
4172
+ */
4173
+ email: string;
4174
+ };
4175
+ };
4176
+ };
4177
+ responses: {
4178
+ 200: {
4179
+ headers: {
4180
+ [name: string]: unknown;
4181
+ };
4182
+ content: {
4183
+ "application/json": {
4184
+ success: boolean;
4185
+ };
4186
+ "multipart/form-data": {
4187
+ success: boolean;
4188
+ };
4189
+ "text/plain": {
4190
+ success: boolean;
4191
+ };
4192
+ };
4193
+ };
4194
+ };
4195
+ };
4196
+ postPaymentsWebhooksStripe: {
4197
+ parameters: {
4198
+ query?: never;
4199
+ header?: never;
4200
+ path?: never;
4201
+ cookie?: never;
4202
+ };
4203
+ requestBody?: never;
4204
+ responses: {
4205
+ 200: {
4206
+ headers: {
4207
+ [name: string]: unknown;
4208
+ };
4209
+ content?: never;
4210
+ };
4211
+ };
4212
+ };
4213
+ "postPaymentsSetup-intent": {
4214
+ parameters: {
4215
+ query?: never;
4216
+ header?: never;
4217
+ path?: never;
4218
+ cookie?: never;
4219
+ };
4220
+ requestBody: {
4221
+ content: {
4222
+ "application/json": {
4223
+ paymentMethodId: string;
4224
+ requireThreeDSecure?: boolean;
4225
+ };
4226
+ "multipart/form-data": {
4227
+ paymentMethodId: string;
4228
+ requireThreeDSecure?: boolean;
4229
+ };
4230
+ "text/plain": {
4231
+ paymentMethodId: string;
4232
+ requireThreeDSecure?: boolean;
2446
4233
  };
2447
4234
  };
2448
4235
  };
@@ -2453,36 +4240,37 @@ export interface operations {
2453
4240
  };
2454
4241
  content: {
2455
4242
  "application/json": {
2456
- success: boolean;
4243
+ accepted: boolean;
4244
+ verificationError: (string | null) | null;
4245
+ paymentVerified: boolean;
4246
+ threeDSecureAuthenticated: boolean;
4247
+ requiresAction: boolean;
4248
+ clientSecret: (string | null) | null;
4249
+ setupIntentId: (string | null) | null;
2457
4250
  };
2458
4251
  "multipart/form-data": {
2459
- success: boolean;
4252
+ accepted: boolean;
4253
+ verificationError: (string | null) | null;
4254
+ paymentVerified: boolean;
4255
+ threeDSecureAuthenticated: boolean;
4256
+ requiresAction: boolean;
4257
+ clientSecret: (string | null) | null;
4258
+ setupIntentId: (string | null) | null;
2460
4259
  };
2461
4260
  "text/plain": {
2462
- success: boolean;
4261
+ accepted: boolean;
4262
+ verificationError: (string | null) | null;
4263
+ paymentVerified: boolean;
4264
+ threeDSecureAuthenticated: boolean;
4265
+ requiresAction: boolean;
4266
+ clientSecret: (string | null) | null;
4267
+ setupIntentId: (string | null) | null;
2463
4268
  };
2464
4269
  };
2465
4270
  };
2466
4271
  };
2467
4272
  };
2468
- postPaymentsWebhooksStripe: {
2469
- parameters: {
2470
- query?: never;
2471
- header?: never;
2472
- path?: never;
2473
- cookie?: never;
2474
- };
2475
- requestBody?: never;
2476
- responses: {
2477
- 200: {
2478
- headers: {
2479
- [name: string]: unknown;
2480
- };
2481
- content?: never;
2482
- };
2483
- };
2484
- };
2485
- "postPaymentsSetup-intent": {
4273
+ "postPaymentsSetup-intentConfirm": {
2486
4274
  parameters: {
2487
4275
  query?: never;
2488
4276
  header?: never;
@@ -2492,13 +4280,13 @@ export interface operations {
2492
4280
  requestBody: {
2493
4281
  content: {
2494
4282
  "application/json": {
2495
- paymentMethodId: string;
4283
+ setupIntentId: string;
2496
4284
  };
2497
4285
  "multipart/form-data": {
2498
- paymentMethodId: string;
4286
+ setupIntentId: string;
2499
4287
  };
2500
4288
  "text/plain": {
2501
- paymentMethodId: string;
4289
+ setupIntentId: string;
2502
4290
  };
2503
4291
  };
2504
4292
  };
@@ -2512,6 +4300,7 @@ export interface operations {
2512
4300
  accepted: boolean;
2513
4301
  verificationError: (string | null) | null;
2514
4302
  paymentVerified: boolean;
4303
+ threeDSecureAuthenticated: boolean;
2515
4304
  requiresAction: boolean;
2516
4305
  clientSecret: (string | null) | null;
2517
4306
  setupIntentId: (string | null) | null;
@@ -2520,6 +4309,7 @@ export interface operations {
2520
4309
  accepted: boolean;
2521
4310
  verificationError: (string | null) | null;
2522
4311
  paymentVerified: boolean;
4312
+ threeDSecureAuthenticated: boolean;
2523
4313
  requiresAction: boolean;
2524
4314
  clientSecret: (string | null) | null;
2525
4315
  setupIntentId: (string | null) | null;
@@ -2528,6 +4318,7 @@ export interface operations {
2528
4318
  accepted: boolean;
2529
4319
  verificationError: (string | null) | null;
2530
4320
  paymentVerified: boolean;
4321
+ threeDSecureAuthenticated: boolean;
2531
4322
  requiresAction: boolean;
2532
4323
  clientSecret: (string | null) | null;
2533
4324
  setupIntentId: (string | null) | null;
@@ -2707,14 +4498,59 @@ export interface operations {
2707
4498
  "application/json": {
2708
4499
  clientSecret: (string | null) | null;
2709
4500
  paymentIntentId: string;
4501
+ requiresAction: boolean;
2710
4502
  };
2711
4503
  "multipart/form-data": {
2712
4504
  clientSecret: (string | null) | null;
2713
4505
  paymentIntentId: string;
4506
+ requiresAction: boolean;
2714
4507
  };
2715
4508
  "text/plain": {
2716
4509
  clientSecret: (string | null) | null;
2717
4510
  paymentIntentId: string;
4511
+ requiresAction: boolean;
4512
+ };
4513
+ };
4514
+ };
4515
+ };
4516
+ };
4517
+ "postPaymentsPayment-intentConfirm": {
4518
+ parameters: {
4519
+ query?: never;
4520
+ header?: never;
4521
+ path?: never;
4522
+ cookie?: never;
4523
+ };
4524
+ requestBody: {
4525
+ content: {
4526
+ "application/json": {
4527
+ paymentIntentId: string;
4528
+ };
4529
+ "multipart/form-data": {
4530
+ paymentIntentId: string;
4531
+ };
4532
+ "text/plain": {
4533
+ paymentIntentId: string;
4534
+ };
4535
+ };
4536
+ };
4537
+ responses: {
4538
+ 200: {
4539
+ headers: {
4540
+ [name: string]: unknown;
4541
+ };
4542
+ content: {
4543
+ "application/json": {
4544
+ success: boolean;
4545
+ paymentIntentId: string;
4546
+ };
4547
+ "multipart/form-data": {
4548
+ success: boolean;
4549
+ paymentIntentId: string;
4550
+ };
4551
+ "text/plain": {
4552
+ success: boolean;
4553
+ paymentIntentId: string;
2718
4554
  };
2719
4555
  };
2720
4556
  };
@@ -2768,6 +4604,375 @@ export interface operations {
2768
4604
  };
2769
4605
  };
2770
4606
  };
4607
+ "getOauth-apps": {
4608
+ parameters: {
4609
+ query?: never;
4610
+ header?: never;
4611
+ path?: never;
4612
+ cookie?: never;
4613
+ };
4614
+ requestBody?: never;
4615
+ responses: {
4616
+ 200: {
4617
+ headers: {
4618
+ [name: string]: unknown;
4619
+ };
4620
+ content: {
4621
+ "application/json": {
4622
+ apps: {
4623
+ clientId: string;
4624
+ name: string;
4625
+ redirectUris: string[];
4626
+ logoUri?: string;
4627
+ clientUri?: string;
4628
+ tosUri?: string;
4629
+ policyUri?: string;
4630
+ confidential: boolean;
4631
+ /** @description The app's scope ceiling. */
4632
+ scopes: string[];
4633
+ createdAt?: string;
4634
+ }[];
4635
+ total: number;
4636
+ limit: number;
4637
+ };
4638
+ "multipart/form-data": {
4639
+ apps: {
4640
+ clientId: string;
4641
+ name: string;
4642
+ redirectUris: string[];
4643
+ logoUri?: string;
4644
+ clientUri?: string;
4645
+ tosUri?: string;
4646
+ policyUri?: string;
4647
+ confidential: boolean;
4648
+ /** @description The app's scope ceiling. */
4649
+ scopes: string[];
4650
+ createdAt?: string;
4651
+ }[];
4652
+ total: number;
4653
+ limit: number;
4654
+ };
4655
+ "text/plain": {
4656
+ apps: {
4657
+ clientId: string;
4658
+ name: string;
4659
+ redirectUris: string[];
4660
+ logoUri?: string;
4661
+ clientUri?: string;
4662
+ tosUri?: string;
4663
+ policyUri?: string;
4664
+ confidential: boolean;
4665
+ /** @description The app's scope ceiling. */
4666
+ scopes: string[];
4667
+ createdAt?: string;
4668
+ }[];
4669
+ total: number;
4670
+ limit: number;
4671
+ };
4672
+ };
4673
+ };
4674
+ };
4675
+ };
4676
+ "postOauth-apps": {
4677
+ parameters: {
4678
+ query?: never;
4679
+ header?: never;
4680
+ path?: never;
4681
+ cookie?: never;
4682
+ };
4683
+ requestBody: {
4684
+ content: {
4685
+ "application/json": {
4686
+ /** @description Display name shown to users on the Nosana consent screen. */
4687
+ name: string;
4688
+ /** @description Exact redirect URIs the authorization code may be returned to. */
4689
+ redirectUris: string[];
4690
+ /** @description Logo URL shown on the consent screen. */
4691
+ logoUri?: string;
4692
+ /** @description The app's homepage URL. */
4693
+ clientUri?: string;
4694
+ /** @description Terms of service URL. */
4695
+ tosUri?: string;
4696
+ /** @description Privacy policy URL. */
4697
+ policyUri?: string;
4698
+ /** @description Server-side app that gets a client secret (no PKCE required). Defaults to false (public app, PKCE). */
4699
+ confidential?: boolean;
4700
+ /** @description The app's ceiling: the most it may ever ask a user for. Must be a subset of the scopes the calling credential holds. Each user still chooses what to grant on the consent screen. Defaults to the caller's own scopes. */
4701
+ scopes?: string[];
4702
+ };
4703
+ "multipart/form-data": {
4704
+ /** @description Display name shown to users on the Nosana consent screen. */
4705
+ name: string;
4706
+ /** @description Exact redirect URIs the authorization code may be returned to. */
4707
+ redirectUris: string[];
4708
+ /** @description Logo URL shown on the consent screen. */
4709
+ logoUri?: string;
4710
+ /** @description The app's homepage URL. */
4711
+ clientUri?: string;
4712
+ /** @description Terms of service URL. */
4713
+ tosUri?: string;
4714
+ /** @description Privacy policy URL. */
4715
+ policyUri?: string;
4716
+ /** @description Server-side app that gets a client secret (no PKCE required). Defaults to false (public app, PKCE). */
4717
+ confidential?: boolean;
4718
+ /** @description The app's ceiling: the most it may ever ask a user for. Must be a subset of the scopes the calling credential holds. Each user still chooses what to grant on the consent screen. Defaults to the caller's own scopes. */
4719
+ scopes?: string[];
4720
+ };
4721
+ "text/plain": {
4722
+ /** @description Display name shown to users on the Nosana consent screen. */
4723
+ name: string;
4724
+ /** @description Exact redirect URIs the authorization code may be returned to. */
4725
+ redirectUris: string[];
4726
+ /** @description Logo URL shown on the consent screen. */
4727
+ logoUri?: string;
4728
+ /** @description The app's homepage URL. */
4729
+ clientUri?: string;
4730
+ /** @description Terms of service URL. */
4731
+ tosUri?: string;
4732
+ /** @description Privacy policy URL. */
4733
+ policyUri?: string;
4734
+ /** @description Server-side app that gets a client secret (no PKCE required). Defaults to false (public app, PKCE). */
4735
+ confidential?: boolean;
4736
+ /** @description The app's ceiling: the most it may ever ask a user for. Must be a subset of the scopes the calling credential holds. Each user still chooses what to grant on the consent screen. Defaults to the caller's own scopes. */
4737
+ scopes?: string[];
4738
+ };
4739
+ };
4740
+ };
4741
+ responses: {
4742
+ 200: {
4743
+ headers: {
4744
+ [name: string]: unknown;
4745
+ };
4746
+ content: {
4747
+ "application/json": {
4748
+ clientId: string;
4749
+ name: string;
4750
+ redirectUris: string[];
4751
+ logoUri?: string;
4752
+ clientUri?: string;
4753
+ tosUri?: string;
4754
+ policyUri?: string;
4755
+ confidential: boolean;
4756
+ /** @description The app's scope ceiling. */
4757
+ scopes: string[];
4758
+ createdAt?: string;
4759
+ /** @description Confidential apps only — shown once, store it securely. */
4760
+ clientSecret?: string;
4761
+ };
4762
+ "multipart/form-data": {
4763
+ clientId: string;
4764
+ name: string;
4765
+ redirectUris: string[];
4766
+ logoUri?: string;
4767
+ clientUri?: string;
4768
+ tosUri?: string;
4769
+ policyUri?: string;
4770
+ confidential: boolean;
4771
+ /** @description The app's scope ceiling. */
4772
+ scopes: string[];
4773
+ createdAt?: string;
4774
+ /** @description Confidential apps only — shown once, store it securely. */
4775
+ clientSecret?: string;
4776
+ };
4777
+ "text/plain": {
4778
+ clientId: string;
4779
+ name: string;
4780
+ redirectUris: string[];
4781
+ logoUri?: string;
4782
+ clientUri?: string;
4783
+ tosUri?: string;
4784
+ policyUri?: string;
4785
+ confidential: boolean;
4786
+ /** @description The app's scope ceiling. */
4787
+ scopes: string[];
4788
+ createdAt?: string;
4789
+ /** @description Confidential apps only — shown once, store it securely. */
4790
+ clientSecret?: string;
4791
+ };
4792
+ };
4793
+ };
4794
+ };
4795
+ };
4796
+ "getOauth-appsById": {
4797
+ parameters: {
4798
+ query?: never;
4799
+ header?: never;
4800
+ path: {
4801
+ id: string;
4802
+ };
4803
+ cookie?: never;
4804
+ };
4805
+ requestBody?: never;
4806
+ responses: {
4807
+ 200: {
4808
+ headers: {
4809
+ [name: string]: unknown;
4810
+ };
4811
+ content: {
4812
+ "application/json": {
4813
+ clientId: string;
4814
+ name: string;
4815
+ redirectUris: string[];
4816
+ logoUri?: string;
4817
+ clientUri?: string;
4818
+ tosUri?: string;
4819
+ policyUri?: string;
4820
+ confidential: boolean;
4821
+ /** @description The app's scope ceiling. */
4822
+ scopes: string[];
4823
+ createdAt?: string;
4824
+ };
4825
+ "multipart/form-data": {
4826
+ clientId: string;
4827
+ name: string;
4828
+ redirectUris: string[];
4829
+ logoUri?: string;
4830
+ clientUri?: string;
4831
+ tosUri?: string;
4832
+ policyUri?: string;
4833
+ confidential: boolean;
4834
+ /** @description The app's scope ceiling. */
4835
+ scopes: string[];
4836
+ createdAt?: string;
4837
+ };
4838
+ "text/plain": {
4839
+ clientId: string;
4840
+ name: string;
4841
+ redirectUris: string[];
4842
+ logoUri?: string;
4843
+ clientUri?: string;
4844
+ tosUri?: string;
4845
+ policyUri?: string;
4846
+ confidential: boolean;
4847
+ /** @description The app's scope ceiling. */
4848
+ scopes: string[];
4849
+ createdAt?: string;
4850
+ };
4851
+ };
4852
+ };
4853
+ };
4854
+ };
4855
+ "postOauth-appsByIdUpdate": {
4856
+ parameters: {
4857
+ query?: never;
4858
+ header?: never;
4859
+ path: {
4860
+ id: string;
4861
+ };
4862
+ cookie?: never;
4863
+ };
4864
+ requestBody: {
4865
+ content: {
4866
+ "application/json": {
4867
+ name?: string;
4868
+ redirectUris?: string[];
4869
+ logoUri?: string;
4870
+ clientUri?: string;
4871
+ tosUri?: string;
4872
+ policyUri?: string;
4873
+ /** @description Replace the app's scope ceiling. Subject to the same subset check as creation. Narrowing it does not revoke scopes already granted to users; those lapse when their tokens are next refreshed. */
4874
+ scopes?: string[];
4875
+ };
4876
+ "multipart/form-data": {
4877
+ name?: string;
4878
+ redirectUris?: string[];
4879
+ logoUri?: string;
4880
+ clientUri?: string;
4881
+ tosUri?: string;
4882
+ policyUri?: string;
4883
+ /** @description Replace the app's scope ceiling. Subject to the same subset check as creation. Narrowing it does not revoke scopes already granted to users; those lapse when their tokens are next refreshed. */
4884
+ scopes?: string[];
4885
+ };
4886
+ "text/plain": {
4887
+ name?: string;
4888
+ redirectUris?: string[];
4889
+ logoUri?: string;
4890
+ clientUri?: string;
4891
+ tosUri?: string;
4892
+ policyUri?: string;
4893
+ /** @description Replace the app's scope ceiling. Subject to the same subset check as creation. Narrowing it does not revoke scopes already granted to users; those lapse when their tokens are next refreshed. */
4894
+ scopes?: string[];
4895
+ };
4896
+ };
4897
+ };
4898
+ responses: {
4899
+ 200: {
4900
+ headers: {
4901
+ [name: string]: unknown;
4902
+ };
4903
+ content: {
4904
+ "application/json": {
4905
+ clientId: string;
4906
+ name: string;
4907
+ redirectUris: string[];
4908
+ logoUri?: string;
4909
+ clientUri?: string;
4910
+ tosUri?: string;
4911
+ policyUri?: string;
4912
+ confidential: boolean;
4913
+ /** @description The app's scope ceiling. */
4914
+ scopes: string[];
4915
+ createdAt?: string;
4916
+ };
4917
+ "multipart/form-data": {
4918
+ clientId: string;
4919
+ name: string;
4920
+ redirectUris: string[];
4921
+ logoUri?: string;
4922
+ clientUri?: string;
4923
+ tosUri?: string;
4924
+ policyUri?: string;
4925
+ confidential: boolean;
4926
+ /** @description The app's scope ceiling. */
4927
+ scopes: string[];
4928
+ createdAt?: string;
4929
+ };
4930
+ "text/plain": {
4931
+ clientId: string;
4932
+ name: string;
4933
+ redirectUris: string[];
4934
+ logoUri?: string;
4935
+ clientUri?: string;
4936
+ tosUri?: string;
4937
+ policyUri?: string;
4938
+ confidential: boolean;
4939
+ /** @description The app's scope ceiling. */
4940
+ scopes: string[];
4941
+ createdAt?: string;
4942
+ };
4943
+ };
4944
+ };
4945
+ };
4946
+ };
4947
+ "postOauth-appsByIdDelete": {
4948
+ parameters: {
4949
+ query?: never;
4950
+ header?: never;
4951
+ path: {
4952
+ id: string;
4953
+ };
4954
+ cookie?: never;
4955
+ };
4956
+ requestBody?: never;
4957
+ responses: {
4958
+ 200: {
4959
+ headers: {
4960
+ [name: string]: unknown;
4961
+ };
4962
+ content: {
4963
+ "application/json": {
4964
+ success: boolean;
4965
+ };
4966
+ "multipart/form-data": {
4967
+ success: boolean;
4968
+ };
4969
+ "text/plain": {
4970
+ success: boolean;
4971
+ };
4972
+ };
4973
+ };
4974
+ };
4975
+ };
2771
4976
  getMetrics: {
2772
4977
  parameters: {
2773
4978
  query?: never;