@nosana/api 2.14.1 → 2.14.3

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?: never;
417
+ options?: never;
418
+ head?: never;
419
+ patch: operations["patchCreditsAdminLlmModelsById"];
420
+ trace?: never;
421
+ };
302
422
  "/templates/": {
303
423
  parameters: {
304
424
  query?: never;
@@ -547,6 +667,26 @@ export interface paths {
547
667
  patch?: never;
548
668
  trace?: never;
549
669
  };
670
+ "/payments/setup-intent/confirm": {
671
+ parameters: {
672
+ query?: never;
673
+ header?: never;
674
+ path?: never;
675
+ cookie?: never;
676
+ };
677
+ get?: never;
678
+ put?: never;
679
+ /**
680
+ * Finalize card setup after 3D Secure
681
+ * @description Re-checks a SetupIntent after the client completes 3D Secure and records the verification result
682
+ */
683
+ post: operations["postPaymentsSetup-intentConfirm"];
684
+ delete?: never;
685
+ options?: never;
686
+ head?: never;
687
+ patch?: never;
688
+ trace?: never;
689
+ };
550
690
  "/payments/methods": {
551
691
  parameters: {
552
692
  query?: never;
@@ -627,6 +767,26 @@ export interface paths {
627
767
  patch?: never;
628
768
  trace?: never;
629
769
  };
770
+ "/payments/payment-intent/confirm": {
771
+ parameters: {
772
+ query?: never;
773
+ header?: never;
774
+ path?: never;
775
+ cookie?: never;
776
+ };
777
+ get?: never;
778
+ put?: never;
779
+ /**
780
+ * Finalize purchase after 3D Secure
781
+ * @description Re-checks a PaymentIntent after the client completes 3D Secure and grants credits. Idempotent with the payment_intent.succeeded webhook.
782
+ */
783
+ post: operations["postPaymentsPayment-intentConfirm"];
784
+ delete?: never;
785
+ options?: never;
786
+ head?: never;
787
+ patch?: never;
788
+ trace?: never;
789
+ };
630
790
  "/payments/purchases": {
631
791
  parameters: {
632
792
  query?: never;
@@ -647,30 +807,42 @@ export interface paths {
647
807
  patch?: never;
648
808
  trace?: never;
649
809
  };
650
- "/metrics": {
810
+ "/oauth-apps/": {
651
811
  parameters: {
652
812
  query?: never;
653
813
  header?: never;
654
814
  path?: never;
655
815
  cookie?: never;
656
816
  };
657
- get: operations["getMetrics"];
817
+ /**
818
+ * List OAuth apps
819
+ * @description List the OAuth apps owned by the authenticated user.
820
+ */
821
+ get: operations["getOauth-apps"];
658
822
  put?: never;
659
- post?: never;
823
+ /**
824
+ * Create OAuth app
825
+ * @description Register an OAuth 2.1 client (a 'Connect with Nosana' app) owned by the authenticated user.
826
+ */
827
+ post: operations["postOauth-apps"];
660
828
  delete?: never;
661
829
  options?: never;
662
830
  head?: never;
663
831
  patch?: never;
664
832
  trace?: never;
665
833
  };
666
- "/health": {
834
+ "/oauth-apps/{id}": {
667
835
  parameters: {
668
836
  query?: never;
669
837
  header?: never;
670
838
  path?: never;
671
839
  cookie?: never;
672
840
  };
673
- get: operations["getHealth"];
841
+ /**
842
+ * Get OAuth app
843
+ * @description Get one of the authenticated user's OAuth apps by client id.
844
+ */
845
+ get: operations["getOauth-appsById"];
674
846
  put?: never;
675
847
  post?: never;
676
848
  delete?: never;
@@ -679,97 +851,1183 @@ export interface paths {
679
851
  patch?: never;
680
852
  trace?: never;
681
853
  };
682
- }
683
- export type webhooks = Record<string, never>;
684
- export interface components {
685
- schemas: {
854
+ "/oauth-apps/{id}/update": {
855
+ parameters: {
856
+ query?: never;
857
+ header?: never;
858
+ path?: never;
859
+ cookie?: never;
860
+ };
861
+ get?: never;
862
+ put?: never;
686
863
  /**
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}
864
+ * Update OAuth app
865
+ * @description Update one of the authenticated user's OAuth apps.
689
866
  */
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
- };
867
+ post: operations["postOauth-appsByIdUpdate"];
868
+ delete?: never;
869
+ options?: never;
870
+ head?: never;
871
+ patch?: never;
872
+ trace?: never;
738
873
  };
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: {
874
+ "/oauth-apps/{id}/delete": {
748
875
  parameters: {
749
876
  query?: never;
750
877
  header?: never;
751
878
  path?: never;
752
879
  cookie?: never;
753
880
  };
754
- requestBody?: never;
755
- responses: {
756
- 200: {
757
- headers: {
758
- [name: string]: unknown;
759
- };
760
- content?: never;
761
- };
881
+ get?: never;
882
+ put?: never;
883
+ /**
884
+ * Delete OAuth app
885
+ * @description Delete one of the authenticated user's OAuth apps.
886
+ */
887
+ post: operations["postOauth-appsByIdDelete"];
888
+ delete?: never;
889
+ options?: never;
890
+ head?: never;
891
+ patch?: never;
892
+ trace?: never;
893
+ };
894
+ "/metrics": {
895
+ parameters: {
896
+ query?: never;
897
+ header?: never;
898
+ path?: never;
899
+ cookie?: never;
762
900
  };
901
+ get: operations["getMetrics"];
902
+ put?: never;
903
+ post?: never;
904
+ delete?: never;
905
+ options?: never;
906
+ head?: never;
907
+ patch?: never;
908
+ trace?: never;
763
909
  };
764
- "postAuthValidate-session": {
910
+ "/health": {
765
911
  parameters: {
766
912
  query?: never;
767
913
  header?: never;
768
914
  path?: never;
769
915
  cookie?: never;
770
916
  };
771
- requestBody: {
772
- content: {
917
+ get: operations["getHealth"];
918
+ put?: never;
919
+ post?: never;
920
+ delete?: never;
921
+ options?: never;
922
+ head?: never;
923
+ patch?: never;
924
+ trace?: never;
925
+ };
926
+ "/jobs/{address}/node/info": {
927
+ parameters: {
928
+ query?: never;
929
+ header?: never;
930
+ path?: never;
931
+ cookie?: never;
932
+ };
933
+ /**
934
+ * Stream job info
935
+ * @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.
936
+ */
937
+ get: {
938
+ parameters: {
939
+ query?: never;
940
+ header?: never;
941
+ path: {
942
+ /** @description Job address */
943
+ address: string;
944
+ };
945
+ cookie?: never;
946
+ };
947
+ requestBody?: never;
948
+ responses: {
949
+ /** @description A stream of `JobInfo` frames as unnamed `message` events. */
950
+ 200: {
951
+ headers: {
952
+ [name: string]: unknown;
953
+ };
954
+ content: {
955
+ "text/event-stream": string;
956
+ };
957
+ };
958
+ /** @description No job with that address, or the caller does not own it. */
959
+ 404: {
960
+ headers: {
961
+ [name: string]: unknown;
962
+ };
963
+ content?: never;
964
+ };
965
+ /** @description This job has not been picked up by a node yet. */
966
+ 409: {
967
+ headers: {
968
+ [name: string]: unknown;
969
+ };
970
+ content?: never;
971
+ };
972
+ /** @description The indexer or the node running this job could not be reached. */
973
+ 502: {
974
+ headers: {
975
+ [name: string]: unknown;
976
+ };
977
+ content?: never;
978
+ };
979
+ };
980
+ };
981
+ put?: never;
982
+ post?: never;
983
+ delete?: never;
984
+ options?: never;
985
+ head?: never;
986
+ patch?: never;
987
+ trace?: never;
988
+ };
989
+ "/jobs/{address}/node/results": {
990
+ parameters: {
991
+ query?: never;
992
+ header?: never;
993
+ path?: never;
994
+ cookie?: never;
995
+ };
996
+ /**
997
+ * Collect the job results
998
+ * @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.
999
+ */
1000
+ get: {
1001
+ parameters: {
1002
+ query?: never;
1003
+ header?: never;
1004
+ path: {
1005
+ /** @description Job address */
1006
+ address: string;
1007
+ };
1008
+ cookie?: never;
1009
+ };
1010
+ requestBody?: never;
1011
+ responses: {
1012
+ /** @description The flow state. */
1013
+ 200: {
1014
+ headers: {
1015
+ [name: string]: unknown;
1016
+ };
1017
+ content: {
1018
+ "application/json": components["schemas"]["FlowState"];
1019
+ };
1020
+ };
1021
+ /** @description No job with that address, or the caller does not own it. */
1022
+ 404: {
1023
+ headers: {
1024
+ [name: string]: unknown;
1025
+ };
1026
+ content?: never;
1027
+ };
1028
+ /** @description This job has not been picked up by a node yet. */
1029
+ 409: {
1030
+ headers: {
1031
+ [name: string]: unknown;
1032
+ };
1033
+ content?: never;
1034
+ };
1035
+ /** @description The indexer or the node running this job could not be reached. */
1036
+ 502: {
1037
+ headers: {
1038
+ [name: string]: unknown;
1039
+ };
1040
+ content?: never;
1041
+ };
1042
+ };
1043
+ };
1044
+ put?: never;
1045
+ post?: never;
1046
+ delete?: never;
1047
+ options?: never;
1048
+ head?: never;
1049
+ patch?: never;
1050
+ trace?: never;
1051
+ };
1052
+ "/jobs/{address}/node/job-definition": {
1053
+ parameters: {
1054
+ query?: never;
1055
+ header?: never;
1056
+ path?: never;
1057
+ cookie?: never;
1058
+ };
1059
+ /**
1060
+ * Get the job definition
1061
+ * @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.
1062
+ */
1063
+ get: {
1064
+ parameters: {
1065
+ query?: never;
1066
+ header?: never;
1067
+ path: {
1068
+ /** @description Job address */
1069
+ address: string;
1070
+ };
1071
+ cookie?: never;
1072
+ };
1073
+ requestBody?: never;
1074
+ responses: {
1075
+ /** @description The job definition. */
1076
+ 200: {
1077
+ headers: {
1078
+ [name: string]: unknown;
1079
+ };
1080
+ content: {
1081
+ "application/json": components["schemas"]["JobDefinition"];
1082
+ };
1083
+ };
1084
+ /** @description No job with that address, or the caller does not own it. */
1085
+ 404: {
1086
+ headers: {
1087
+ [name: string]: unknown;
1088
+ };
1089
+ content?: never;
1090
+ };
1091
+ /** @description This job has not been picked up by a node yet. */
1092
+ 409: {
1093
+ headers: {
1094
+ [name: string]: unknown;
1095
+ };
1096
+ content?: never;
1097
+ };
1098
+ /** @description The indexer or the node running this job could not be reached. */
1099
+ 502: {
1100
+ headers: {
1101
+ [name: string]: unknown;
1102
+ };
1103
+ content?: never;
1104
+ };
1105
+ };
1106
+ };
1107
+ put?: never;
1108
+ post?: never;
1109
+ delete?: never;
1110
+ options?: never;
1111
+ head?: never;
1112
+ patch?: never;
1113
+ trace?: never;
1114
+ };
1115
+ "/jobs/{address}/node/endpoints": {
1116
+ parameters: {
1117
+ query?: never;
1118
+ header?: never;
1119
+ path?: never;
1120
+ cookie?: never;
1121
+ };
1122
+ /**
1123
+ * Exposed endpoints
1124
+ * @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.
1125
+ */
1126
+ get: {
1127
+ parameters: {
1128
+ query?: never;
1129
+ header?: never;
1130
+ path: {
1131
+ /** @description Job address */
1132
+ address: string;
1133
+ };
1134
+ cookie?: never;
1135
+ };
1136
+ requestBody?: never;
1137
+ responses: {
1138
+ /** @description Endpoints and their status. */
1139
+ 200: {
1140
+ headers: {
1141
+ [name: string]: unknown;
1142
+ };
1143
+ content: {
1144
+ "application/json": components["schemas"]["JobEndpoints"];
1145
+ };
1146
+ };
1147
+ /** @description No job with that address, or the caller does not own it. */
1148
+ 404: {
1149
+ headers: {
1150
+ [name: string]: unknown;
1151
+ };
1152
+ content?: never;
1153
+ };
1154
+ /** @description This job has not been picked up by a node yet. */
1155
+ 409: {
1156
+ headers: {
1157
+ [name: string]: unknown;
1158
+ };
1159
+ content?: never;
1160
+ };
1161
+ /** @description The indexer or the node running this job could not be reached. */
1162
+ 502: {
1163
+ headers: {
1164
+ [name: string]: unknown;
1165
+ };
1166
+ content?: never;
1167
+ };
1168
+ };
1169
+ };
1170
+ put?: never;
1171
+ post?: never;
1172
+ delete?: never;
1173
+ options?: never;
1174
+ head?: never;
1175
+ patch?: never;
1176
+ trace?: never;
1177
+ };
1178
+ "/jobs/{address}/node/stats": {
1179
+ parameters: {
1180
+ query?: never;
1181
+ header?: never;
1182
+ path?: never;
1183
+ cookie?: never;
1184
+ };
1185
+ /**
1186
+ * Resource stats
1187
+ * @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.
1188
+ */
1189
+ get: {
1190
+ parameters: {
1191
+ query?: never;
1192
+ header?: never;
1193
+ path: {
1194
+ /** @description Job address */
1195
+ address: string;
1196
+ };
1197
+ cookie?: never;
1198
+ };
1199
+ requestBody?: never;
1200
+ responses: {
1201
+ /** @description Samples, oldest first. */
1202
+ 200: {
1203
+ headers: {
1204
+ [name: string]: unknown;
1205
+ };
1206
+ content: {
1207
+ "application/json": components["schemas"]["TaskStat"][];
1208
+ };
1209
+ };
1210
+ /** @description No job with that address, or the caller does not own it. */
1211
+ 404: {
1212
+ headers: {
1213
+ [name: string]: unknown;
1214
+ };
1215
+ content?: never;
1216
+ };
1217
+ /** @description This job has not been picked up by a node yet. */
1218
+ 409: {
1219
+ headers: {
1220
+ [name: string]: unknown;
1221
+ };
1222
+ content?: never;
1223
+ };
1224
+ /** @description The indexer or the node running this job could not be reached. */
1225
+ 502: {
1226
+ headers: {
1227
+ [name: string]: unknown;
1228
+ };
1229
+ content?: never;
1230
+ };
1231
+ };
1232
+ };
1233
+ put?: never;
1234
+ post?: never;
1235
+ delete?: never;
1236
+ options?: never;
1237
+ head?: never;
1238
+ patch?: never;
1239
+ trace?: never;
1240
+ };
1241
+ "/jobs/{address}/node/ops": {
1242
+ parameters: {
1243
+ query?: never;
1244
+ header?: never;
1245
+ path?: never;
1246
+ cookie?: never;
1247
+ };
1248
+ /**
1249
+ * Operation statuses
1250
+ * @description Status of every operation of the job. Signed on your behalf; only jobs you posted are reachable — anything else answers 404.
1251
+ */
1252
+ get: {
1253
+ parameters: {
1254
+ query?: never;
1255
+ header?: never;
1256
+ path: {
1257
+ /** @description Job address */
1258
+ address: string;
1259
+ };
1260
+ cookie?: never;
1261
+ };
1262
+ requestBody?: never;
1263
+ responses: {
1264
+ /** @description Statuses by operation id. */
1265
+ 200: {
1266
+ headers: {
1267
+ [name: string]: unknown;
1268
+ };
1269
+ content: {
1270
+ "application/json": components["schemas"]["OperationStatuses"];
1271
+ };
1272
+ };
1273
+ /** @description No job with that address, or the caller does not own it. */
1274
+ 404: {
1275
+ headers: {
1276
+ [name: string]: unknown;
1277
+ };
1278
+ content?: never;
1279
+ };
1280
+ /** @description This job has not been picked up by a node yet. */
1281
+ 409: {
1282
+ headers: {
1283
+ [name: string]: unknown;
1284
+ };
1285
+ content?: never;
1286
+ };
1287
+ /** @description The indexer or the node running this job could not be reached. */
1288
+ 502: {
1289
+ headers: {
1290
+ [name: string]: unknown;
1291
+ };
1292
+ content?: never;
1293
+ };
1294
+ };
1295
+ };
1296
+ put?: never;
1297
+ post?: never;
1298
+ delete?: never;
1299
+ options?: never;
1300
+ head?: never;
1301
+ patch?: never;
1302
+ trace?: never;
1303
+ };
1304
+ "/jobs/{address}/node/ops/{opId}": {
1305
+ parameters: {
1306
+ query?: never;
1307
+ header?: never;
1308
+ path?: never;
1309
+ cookie?: never;
1310
+ };
1311
+ /**
1312
+ * Operation status
1313
+ * @description Status of one operation. Signed on your behalf; only jobs you posted are reachable — anything else answers 404.
1314
+ */
1315
+ get: {
1316
+ parameters: {
1317
+ query?: never;
1318
+ header?: never;
1319
+ path: {
1320
+ /** @description Job address */
1321
+ address: string;
1322
+ /** @description An operation id within the job definition. */
1323
+ opId: string;
1324
+ };
1325
+ cookie?: never;
1326
+ };
1327
+ requestBody?: never;
1328
+ responses: {
1329
+ /** @description The operation's status. */
1330
+ 200: {
1331
+ headers: {
1332
+ [name: string]: unknown;
1333
+ };
1334
+ content: {
1335
+ "application/json": string;
1336
+ };
1337
+ };
1338
+ /** @description No job with that address, or the caller does not own it. */
1339
+ 404: {
1340
+ headers: {
1341
+ [name: string]: unknown;
1342
+ };
1343
+ content?: never;
1344
+ };
1345
+ /** @description This job has not been picked up by a node yet. */
1346
+ 409: {
1347
+ headers: {
1348
+ [name: string]: unknown;
1349
+ };
1350
+ content?: never;
1351
+ };
1352
+ /** @description The indexer or the node running this job could not be reached. */
1353
+ 502: {
1354
+ headers: {
1355
+ [name: string]: unknown;
1356
+ };
1357
+ content?: never;
1358
+ };
1359
+ };
1360
+ };
1361
+ put?: never;
1362
+ post?: never;
1363
+ delete?: never;
1364
+ options?: never;
1365
+ head?: never;
1366
+ patch?: never;
1367
+ trace?: never;
1368
+ };
1369
+ "/jobs/{address}/node/group/current": {
1370
+ parameters: {
1371
+ query?: never;
1372
+ header?: never;
1373
+ path?: never;
1374
+ cookie?: never;
1375
+ };
1376
+ /**
1377
+ * Current group statuses
1378
+ * @description Status of the operations in the group currently running. Signed on your behalf; only jobs you posted are reachable — anything else answers 404.
1379
+ */
1380
+ get: {
1381
+ parameters: {
1382
+ query?: never;
1383
+ header?: never;
1384
+ path: {
1385
+ /** @description Job address */
1386
+ address: string;
1387
+ };
1388
+ cookie?: never;
1389
+ };
1390
+ requestBody?: never;
1391
+ responses: {
1392
+ /** @description Statuses by operation id. */
1393
+ 200: {
1394
+ headers: {
1395
+ [name: string]: unknown;
1396
+ };
1397
+ content: {
1398
+ "application/json": components["schemas"]["OperationStatuses"];
1399
+ };
1400
+ };
1401
+ /** @description No job with that address, or the caller does not own it. */
1402
+ 404: {
1403
+ headers: {
1404
+ [name: string]: unknown;
1405
+ };
1406
+ content?: never;
1407
+ };
1408
+ /** @description This job has not been picked up by a node yet. */
1409
+ 409: {
1410
+ headers: {
1411
+ [name: string]: unknown;
1412
+ };
1413
+ content?: never;
1414
+ };
1415
+ /** @description The indexer or the node running this job could not be reached. */
1416
+ 502: {
1417
+ headers: {
1418
+ [name: string]: unknown;
1419
+ };
1420
+ content?: never;
1421
+ };
1422
+ };
1423
+ };
1424
+ put?: never;
1425
+ post?: never;
1426
+ delete?: never;
1427
+ options?: never;
1428
+ head?: never;
1429
+ patch?: never;
1430
+ trace?: never;
1431
+ };
1432
+ "/jobs/{address}/node/group/{group}": {
1433
+ parameters: {
1434
+ query?: never;
1435
+ header?: never;
1436
+ path?: never;
1437
+ cookie?: never;
1438
+ };
1439
+ /**
1440
+ * Group statuses
1441
+ * @description Status of the operations in one group. Signed on your behalf; only jobs you posted are reachable — anything else answers 404.
1442
+ */
1443
+ get: {
1444
+ parameters: {
1445
+ query?: never;
1446
+ header?: never;
1447
+ path: {
1448
+ /** @description Job address */
1449
+ address: string;
1450
+ /** @description A group name within the job definition. */
1451
+ group: string;
1452
+ };
1453
+ cookie?: never;
1454
+ };
1455
+ requestBody?: never;
1456
+ responses: {
1457
+ /** @description Statuses by operation id. */
1458
+ 200: {
1459
+ headers: {
1460
+ [name: string]: unknown;
1461
+ };
1462
+ content: {
1463
+ "application/json": components["schemas"]["OperationStatuses"];
1464
+ };
1465
+ };
1466
+ /** @description No job with that address, or the caller does not own it. */
1467
+ 404: {
1468
+ headers: {
1469
+ [name: string]: unknown;
1470
+ };
1471
+ content?: never;
1472
+ };
1473
+ /** @description This job has not been picked up by a node yet. */
1474
+ 409: {
1475
+ headers: {
1476
+ [name: string]: unknown;
1477
+ };
1478
+ content?: never;
1479
+ };
1480
+ /** @description The indexer or the node running this job could not be reached. */
1481
+ 502: {
1482
+ headers: {
1483
+ [name: string]: unknown;
1484
+ };
1485
+ content?: never;
1486
+ };
1487
+ };
1488
+ };
1489
+ put?: never;
1490
+ post?: never;
1491
+ delete?: never;
1492
+ options?: never;
1493
+ head?: never;
1494
+ patch?: never;
1495
+ trace?: never;
1496
+ };
1497
+ }
1498
+ export type webhooks = Record<string, never>;
1499
+ export interface components {
1500
+ schemas: {
1501
+ /**
1502
+ * @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.
1503
+ * @enum {string}
1504
+ */
1505
+ IdempotencyCode: "IDEMPOTENCY_KEY_PAYLOAD_MISMATCH" | "IDEMPOTENCY_KEY_EXPIRED" | "IDEMPOTENCY_KEY_IN_PROGRESS";
1506
+ /** @description Idempotency control response. Branch on `code`, never on the HTTP status. */
1507
+ IdempotencyError: {
1508
+ code?: components["schemas"]["IdempotencyCode"];
1509
+ message: string;
1510
+ /** @description Seconds to wait before retrying the SAME key. Present for IDEMPOTENCY_KEY_IN_PROGRESS; mirrors the Retry-After header. */
1511
+ retryAfter?: number;
1512
+ };
1513
+ /** @description Ordinary business error. Has no `code` field (unlike IdempotencyError). */
1514
+ JobError: {
1515
+ message: string;
1516
+ };
1517
+ CreateJobWithCreditsResponse: {
1518
+ tx: string;
1519
+ job: string;
1520
+ run: string;
1521
+ credits: {
1522
+ costUSD: number;
1523
+ creditsUsed: number;
1524
+ reservationId: string;
1525
+ project: string;
1526
+ };
1527
+ };
1528
+ ExtendJobWithCreditsResponse: {
1529
+ tx: (string | null) | null;
1530
+ job: string;
1531
+ credits?: {
1532
+ costUSD: number;
1533
+ creditsUsed: number;
1534
+ reservationId: string;
1535
+ };
1536
+ };
1537
+ StopJobWithCreditsResponse: {
1538
+ tx: (string | null) | null;
1539
+ job: string;
1540
+ delisted: boolean;
1541
+ outcome?: "delisted" | "ended" | "already_terminal";
1542
+ };
1543
+ JobsBatchResponse: {
1544
+ items: {
1545
+ index: number;
1546
+ status: "confirmed" | "expired";
1547
+ job?: string;
1548
+ run?: string;
1549
+ /** @description On-chain transaction signature (base58). */
1550
+ tx?: string;
1551
+ }[];
1552
+ };
1553
+ JobDefinition: {
1554
+ /** @constant */
1555
+ version: "0.1";
1556
+ /** @constant */
1557
+ type: "container";
1558
+ logistics?: components["schemas"]["Logistics"];
1559
+ deployment_id?: string;
1560
+ ssh?: components["schemas"]["SSH"];
1561
+ meta?: components["schemas"]["Meta"];
1562
+ global?: components["schemas"]["Global"];
1563
+ ops: components["schemas"]["Ops"];
1564
+ };
1565
+ Logistics: {
1566
+ send: components["schemas"]["Logistic"];
1567
+ receive: components["schemas"]["Logistic"];
1568
+ };
1569
+ Logistic: {
1570
+ type: components["schemas"]["LogisticType"];
1571
+ args: components["schemas"]["Partial__type"];
1572
+ };
1573
+ /**
1574
+ * @description api - we receive and send via an endpoint endpoint
1575
+ * api-listen - we create an endpoint to listen for incoming requests
1576
+ */
1577
+ LogisticType: "api" | "api-listen";
1578
+ /** @description Make all properties in T optional */
1579
+ Partial__type: {
1580
+ endpoint?: string;
1581
+ };
1582
+ SSH: {
1583
+ public_keys?: string[];
1584
+ };
1585
+ Meta: {
1586
+ trigger?: string;
1587
+ system_resources?: components["schemas"]["Recordstringstringnumber"];
1588
+ } & {
1589
+ [key: string]: string | number | (string | number)[] | components["schemas"]["Recordstringstringnumber_stringnumber_"];
1590
+ };
1591
+ /** @description Construct a type with a set of properties K of type T */
1592
+ Recordstringstringnumber: {
1593
+ [key: string]: string | number;
1594
+ };
1595
+ /** @description Construct a type with a set of properties K of type T */
1596
+ Recordstringstringnumber_stringnumber_: {
1597
+ [key: string]: string | number | (string | number)[];
1598
+ };
1599
+ Global: {
1600
+ image?: string;
1601
+ gpu?: boolean;
1602
+ entrypoint?: string | components["schemas"]["CMDArray"];
1603
+ env?: components["schemas"]["Env"];
1604
+ work_dir?: string;
1605
+ variables?: components["schemas"]["Variables"];
1606
+ };
1607
+ CMDArray: string[];
1608
+ Env: {
1609
+ [key: string]: string;
1610
+ };
1611
+ Variables: {
1612
+ [key: string]: string;
1613
+ };
1614
+ Ops: components["schemas"]["OperationkeyofOperationArgsMap"][];
1615
+ OperationkeyofOperationArgsMap: {
1616
+ type: "container/run" | "container/create-volume";
1617
+ id: components["schemas"]["OperationId"];
1618
+ args: components["schemas"]["ContainerRun"] | components["schemas"]["ContainerCreateVolume"];
1619
+ results?: components["schemas"]["OperationResults"];
1620
+ execution?: components["schemas"]["Execution"];
1621
+ };
1622
+ OperationId: string;
1623
+ ContainerRun: {
1624
+ image: string;
1625
+ aliases?: string | components["schemas"]["Aliases"];
1626
+ cmd?: string | components["schemas"]["CMDArray"];
1627
+ volumes?: components["schemas"]["Volume"][];
1628
+ expose?: number | components["schemas"]["LiteralString"] | {
1629
+ __spread__: components["schemas"]["LiteralString"];
1630
+ chunked?: boolean;
1631
+ } | components["schemas"]["ExposedPort"] | components["schemas"]["UniqueExposedPorts"];
1632
+ gpu?: boolean;
1633
+ work_dir?: string;
1634
+ entrypoint?: string | components["schemas"]["CMDArray"];
1635
+ env?: components["schemas"]["Env"];
1636
+ restart_policy?: "on-failure" | "no" | "always" | "unless-stopped" | {
1637
+ /** @constant */
1638
+ policy: "on-failure";
1639
+ restart_tries?: number;
1640
+ };
1641
+ private?: boolean;
1642
+ resources?: components["schemas"]["Resources"];
1643
+ authentication?: components["schemas"]["Authentication"];
1644
+ };
1645
+ Aliases: string[];
1646
+ Volume: {
1647
+ name: string;
1648
+ dest: string;
1649
+ };
1650
+ LiteralString: string;
1651
+ ExposedPort: {
1652
+ port: number;
1653
+ type?: "api" | "web" | "websocket" | "webapi" | "none";
1654
+ health_checks?: components["schemas"]["HealthCheck"][];
1655
+ };
1656
+ HealthCheck: components["schemas"]["HttpHealthCheck"] | components["schemas"]["WebSocketHealthCheck"];
1657
+ HttpHealthCheck: {
1658
+ /** @constant */
1659
+ type: "http";
1660
+ path: string;
1661
+ method: "GET" | "POST" | "PUT" | "DELETE";
1662
+ expected_status: number;
1663
+ headers?: components["schemas"]["Recordstringstring"];
1664
+ body?: unknown;
1665
+ continuous: boolean;
1666
+ };
1667
+ /** @description Construct a type with a set of properties K of type T */
1668
+ Recordstringstring: {
1669
+ [key: string]: string;
1670
+ };
1671
+ WebSocketHealthCheck: {
1672
+ /** @constant */
1673
+ type: "websocket";
1674
+ expected_response: string;
1675
+ continuous: boolean;
1676
+ };
1677
+ UniqueExposedPorts: components["schemas"]["ExposeBase"][];
1678
+ ExposeBase: number | components["schemas"]["LiteralString"] | {
1679
+ __spread__: components["schemas"]["LiteralString"];
1680
+ chunked?: boolean;
1681
+ } | components["schemas"]["ExposedPort"];
1682
+ Resources: ("__remove-if-empty__" | {
1683
+ __spread__: components["schemas"]["LiteralString"];
1684
+ chunked?: boolean;
1685
+ } | components["schemas"]["S3Base"] | components["schemas"]["S3WithBucket"] | components["schemas"]["S3WithBuckets"] | components["schemas"]["HFResource"] | components["schemas"]["OllamaResource"])[];
1686
+ S3Base: {
1687
+ /** @constant */
1688
+ type: "S3";
1689
+ target: string;
1690
+ url?: string;
1691
+ allowWrite?: boolean;
1692
+ files?: string[];
1693
+ IAM?: components["schemas"]["S3Auth"];
1694
+ };
1695
+ S3Auth: {
1696
+ REGION: string;
1697
+ ACCESS_KEY_ID: string;
1698
+ SECRET_ACCESS_KEY: string;
1699
+ };
1700
+ S3WithBucket: {
1701
+ /** @constant */
1702
+ type: "S3";
1703
+ target: string;
1704
+ bucket: string;
1705
+ url?: string;
1706
+ allowWrite?: boolean;
1707
+ IAM?: components["schemas"]["S3Auth"];
1708
+ };
1709
+ S3WithBuckets: {
1710
+ /** @constant */
1711
+ type: "S3";
1712
+ target: string;
1713
+ buckets: {
1714
+ url: string;
1715
+ files?: string[];
1716
+ }[];
1717
+ url?: string;
1718
+ allowWrite?: boolean;
1719
+ IAM?: components["schemas"]["S3Auth"];
1720
+ };
1721
+ HFResource: {
1722
+ /** @constant */
1723
+ type: "HF";
1724
+ target: string;
1725
+ repo: string;
1726
+ revision?: string;
1727
+ files?: string[];
1728
+ accessToken?: string;
1729
+ };
1730
+ OllamaResource: {
1731
+ /** @constant */
1732
+ type: "Ollama";
1733
+ model: string;
1734
+ target?: string;
1735
+ };
1736
+ Authentication: {
1737
+ docker?: components["schemas"]["DockerAuth"];
1738
+ };
1739
+ DockerAuth: {
1740
+ username?: string;
1741
+ password?: string;
1742
+ email?: string;
1743
+ server?: string;
1744
+ };
1745
+ ContainerCreateVolume: {
1746
+ name: string;
1747
+ };
1748
+ OperationResults: {
1749
+ [key: string]: string | components["schemas"]["OperationResult"];
1750
+ };
1751
+ OperationResult: {
1752
+ regex: string;
1753
+ logType: components["schemas"]["LogTypeTuple"];
1754
+ };
1755
+ LogTypeTuple: components["schemas"]["StdOption"][];
1756
+ StdOption: "stdin" | "stdout" | "stderr" | "nodeerr";
1757
+ Execution: {
1758
+ group?: string;
1759
+ timeout?: number;
1760
+ depends_on?: string[];
1761
+ stop_if_dependent_stops?: boolean;
1762
+ };
1763
+ FlowState: {
1764
+ status: string;
1765
+ startTime: number;
1766
+ endTime: null | number;
1767
+ errors?: unknown[];
1768
+ opStates: components["schemas"]["OpState"][];
1769
+ secrets?: components["schemas"]["FlowSecrets"];
1770
+ };
1771
+ OpState: {
1772
+ providerId: null | string;
1773
+ operationId: null | string;
1774
+ group: null | string;
1775
+ status: null | string;
1776
+ startTime: null | number;
1777
+ endTime: null | number;
1778
+ exitCode: null | number;
1779
+ logs: components["schemas"]["Log"][];
1780
+ results?: {
1781
+ [key: string]: string | string[];
1782
+ };
1783
+ error?: {
1784
+ event: string;
1785
+ message: string;
1786
+ code?: number;
1787
+ };
1788
+ diagnostics: {
1789
+ reason: components["schemas"]["DiagnosticsReason"];
1790
+ state?: components["schemas"]["DiagnosticsState"];
1791
+ };
1792
+ };
1793
+ Log: {
1794
+ type: components["schemas"]["StdOption"];
1795
+ log?: string;
1796
+ timestamp: string;
1797
+ };
1798
+ DiagnosticsReason: {
1799
+ hostShutDown: boolean;
1800
+ jobStopped: boolean;
1801
+ jobExpired: boolean;
1802
+ reason?: string;
1803
+ };
1804
+ DiagnosticsState: {
1805
+ Status: string;
1806
+ Running: boolean;
1807
+ Paused: boolean;
1808
+ Restarting: boolean;
1809
+ OOMKilled: boolean;
1810
+ Dead: boolean;
1811
+ Pid: number;
1812
+ ExitCode: number;
1813
+ Error: string;
1814
+ StartedAt: string;
1815
+ FinishedAt: string;
1816
+ Health?: {
1817
+ Status: string;
1818
+ FailingStreak: number;
1819
+ Log: null | {
1820
+ Start: string;
1821
+ End: string;
1822
+ ExitCode: number;
1823
+ Output: string;
1824
+ }[];
1825
+ };
1826
+ RestartCount: number;
1827
+ };
1828
+ FlowSecrets: {
1829
+ urlmode?: "private" | "public";
1830
+ } & {
1831
+ [key: string]: "private" | "public" | components["schemas"]["JobExposeSecrets"];
1832
+ };
1833
+ JobExposeSecrets: {
1834
+ [key: string]: components["schemas"]["EndpointSecret"];
1835
+ };
1836
+ EndpointSecret: {
1837
+ opID: string;
1838
+ port: string | number;
1839
+ url: string;
1840
+ status: components["schemas"]["EndpointStatus"];
1841
+ };
1842
+ EndpointStatus: "ONLINE" | "OFFLINE" | "UNKNOWN";
1843
+ /** @description A Solana address in base58. */
1844
+ Address: string;
1845
+ /** @description The node answers failures with a sentence or with `{ error }`. */
1846
+ NodeError: string | {
1847
+ error: string;
1848
+ };
1849
+ NodeInfo: {
1850
+ /** @description What the node is doing right now, as classified by its monitor. */
1851
+ state: string;
1852
+ info: {
1853
+ gpus?: {
1854
+ devices?: ({
1855
+ index?: number;
1856
+ name?: string;
1857
+ uuid?: string;
1858
+ memory?: unknown;
1859
+ network_architecture?: unknown;
1860
+ } & {
1861
+ [key: string]: unknown;
1862
+ })[];
1863
+ } & {
1864
+ [key: string]: unknown;
1865
+ };
1866
+ /** @description Network details with the IP address redacted. */
1867
+ network?: {
1868
+ [key: string]: unknown;
1869
+ };
1870
+ } & {
1871
+ [key: string]: unknown;
1872
+ };
1873
+ resources: {
1874
+ images: string[];
1875
+ volumes: string[];
1876
+ };
1877
+ } & {
1878
+ [key: string]: unknown;
1879
+ };
1880
+ /** @description An operation's state as the info stream sends it: `OpState` without its logs and provider handle. */
1881
+ OpStateSummary: {
1882
+ operationId?: string | null;
1883
+ group?: string | null;
1884
+ status?: string | null;
1885
+ startTime?: number | null;
1886
+ endTime?: number | null;
1887
+ exitCode?: number | null;
1888
+ results?: {
1889
+ [key: string]: string | string[];
1890
+ };
1891
+ error?: {
1892
+ event: string;
1893
+ message: string;
1894
+ code?: number;
1895
+ };
1896
+ diagnostics?: {
1897
+ reason: components["schemas"]["DiagnosticsReason"];
1898
+ state?: components["schemas"]["DiagnosticsState"];
1899
+ };
1900
+ };
1901
+ /** @description Status per operation, keyed by operation id. */
1902
+ OperationStatuses: {
1903
+ [key: string]: string | null;
1904
+ };
1905
+ /** @description One frame of the job info stream: the flow without logs, plus task status. */
1906
+ JobInfo: {
1907
+ status: string;
1908
+ startTime: number;
1909
+ endTime: number | null;
1910
+ errors: unknown[];
1911
+ opStates: components["schemas"]["OpStateSummary"][];
1912
+ secrets?: components["schemas"]["FlowSecrets"];
1913
+ operations: {
1914
+ all: components["schemas"]["OperationStatuses"] | null;
1915
+ currentGroup?: string;
1916
+ currentGroupStatus: components["schemas"]["OperationStatuses"] | null;
1917
+ } | null;
1918
+ };
1919
+ JobEndpoints: {
1920
+ urls: components["schemas"]["JobExposeSecrets"];
1921
+ /** @enum {string} */
1922
+ status: "ONLINE" | "OFFLINE";
1923
+ };
1924
+ TaskStat: {
1925
+ opId: string;
1926
+ /** @description Unix milliseconds. */
1927
+ timestamp: number;
1928
+ cpu: {
1929
+ cpu_percent: number;
1930
+ };
1931
+ memory: {
1932
+ memory_usage: number;
1933
+ memory_limit: number;
1934
+ memory_percent: number;
1935
+ };
1936
+ disk: {
1937
+ read: number;
1938
+ write: number;
1939
+ };
1940
+ network: {
1941
+ received: number;
1942
+ sent: number;
1943
+ };
1944
+ };
1945
+ TaskLog: {
1946
+ opId: string;
1947
+ group: string;
1948
+ type: string;
1949
+ timestamp: number;
1950
+ message: unknown;
1951
+ };
1952
+ ActionResult: {
1953
+ message: string;
1954
+ };
1955
+ /** @description One OpenSSH `authorized_keys` line: algorithm, base64 key material and an optional comment. */
1956
+ SshPublicKey: string;
1957
+ SshAuthorizationRequest: {
1958
+ sshPublicKey: components["schemas"]["SshPublicKey"];
1959
+ /**
1960
+ * Format: date-time
1961
+ * @description Omit for access until the key is revoked or the job ends.
1962
+ */
1963
+ expiresAt?: string;
1964
+ };
1965
+ SshAuthorization: {
1966
+ job: components["schemas"]["Address"];
1967
+ /** @description Always `nosana`; the hostname identifies the job and operation. */
1968
+ sshUser: string;
1969
+ /** @constant */
1970
+ authorized: true;
1971
+ /** Format: date-time */
1972
+ expiresAt?: string;
1973
+ };
1974
+ SshAuthorizedKey: {
1975
+ sshPublicKey: components["schemas"]["SshPublicKey"];
1976
+ /**
1977
+ * Format: date-time
1978
+ * @description Absent for permanent keys.
1979
+ */
1980
+ expiresAt?: string;
1981
+ };
1982
+ SshKeys: {
1983
+ job: components["schemas"]["Address"];
1984
+ sshUser: string;
1985
+ keys: components["schemas"]["SshAuthorizedKey"][];
1986
+ };
1987
+ SshRevocationRequest: {
1988
+ sshPublicKey: components["schemas"]["SshPublicKey"];
1989
+ };
1990
+ SshRevocation: {
1991
+ job: components["schemas"]["Address"];
1992
+ sshUser: string;
1993
+ /** @constant */
1994
+ revoked: true;
1995
+ };
1996
+ };
1997
+ responses: never;
1998
+ parameters: never;
1999
+ requestBodies: never;
2000
+ headers: never;
2001
+ pathItems: never;
2002
+ }
2003
+ export type $defs = Record<string, never>;
2004
+ export interface operations {
2005
+ getIndex: {
2006
+ parameters: {
2007
+ query?: never;
2008
+ header?: never;
2009
+ path?: never;
2010
+ cookie?: never;
2011
+ };
2012
+ requestBody?: never;
2013
+ responses: {
2014
+ 200: {
2015
+ headers: {
2016
+ [name: string]: unknown;
2017
+ };
2018
+ content?: never;
2019
+ };
2020
+ };
2021
+ };
2022
+ "postAuthValidate-session": {
2023
+ parameters: {
2024
+ query?: never;
2025
+ header?: never;
2026
+ path?: never;
2027
+ cookie?: never;
2028
+ };
2029
+ requestBody: {
2030
+ content: {
773
2031
  "application/json": {
774
2032
  cookieHeader?: string;
775
2033
  };
@@ -887,11 +2145,11 @@ export interface operations {
887
2145
  provider: (string | null) | null;
888
2146
  providerUsername: (string | null) | null;
889
2147
  generatedAddress: string;
890
- authenticationHeader: string;
891
- systemApiKey: string;
892
2148
  created_at: ((Record<string, never> | string | number) | null) | null;
893
2149
  };
894
2150
  apiKeyId?: string;
2151
+ /** @description What the validated key is allowed to do. */
2152
+ scopes?: string[];
895
2153
  };
896
2154
  "multipart/form-data": {
897
2155
  valid: boolean;
@@ -903,11 +2161,11 @@ export interface operations {
903
2161
  provider: (string | null) | null;
904
2162
  providerUsername: (string | null) | null;
905
2163
  generatedAddress: string;
906
- authenticationHeader: string;
907
- systemApiKey: string;
908
2164
  created_at: ((Record<string, never> | string | number) | null) | null;
909
2165
  };
910
2166
  apiKeyId?: string;
2167
+ /** @description What the validated key is allowed to do. */
2168
+ scopes?: string[];
911
2169
  };
912
2170
  "text/plain": {
913
2171
  valid: boolean;
@@ -919,11 +2177,11 @@ export interface operations {
919
2177
  provider: (string | null) | null;
920
2178
  providerUsername: (string | null) | null;
921
2179
  generatedAddress: string;
922
- authenticationHeader: string;
923
- systemApiKey: string;
924
2180
  created_at: ((Record<string, never> | string | number) | null) | null;
925
2181
  };
926
2182
  apiKeyId?: string;
2183
+ /** @description What the validated key is allowed to do. */
2184
+ scopes?: string[];
927
2185
  };
928
2186
  };
929
2187
  };
@@ -1033,6 +2291,54 @@ export interface operations {
1033
2291
  };
1034
2292
  };
1035
2293
  };
2294
+ getAuthScopes: {
2295
+ parameters: {
2296
+ query?: never;
2297
+ header?: never;
2298
+ path?: never;
2299
+ cookie?: never;
2300
+ };
2301
+ requestBody?: never;
2302
+ responses: {
2303
+ 200: {
2304
+ headers: {
2305
+ [name: string]: unknown;
2306
+ };
2307
+ content: {
2308
+ "application/json": {
2309
+ scopes: {
2310
+ /** @description The scope token, e.g. `credits:read`. */
2311
+ scope: string;
2312
+ /** @description User-facing wording, as shown on the consent screen. */
2313
+ description: string;
2314
+ /** @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. */
2315
+ oauthGrantable: boolean;
2316
+ }[];
2317
+ };
2318
+ "multipart/form-data": {
2319
+ scopes: {
2320
+ /** @description The scope token, e.g. `credits:read`. */
2321
+ scope: string;
2322
+ /** @description User-facing wording, as shown on the consent screen. */
2323
+ description: string;
2324
+ /** @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. */
2325
+ oauthGrantable: boolean;
2326
+ }[];
2327
+ };
2328
+ "text/plain": {
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
+ };
2339
+ };
2340
+ };
2341
+ };
1036
2342
  "getApi-keys": {
1037
2343
  parameters: {
1038
2344
  query?: never;
@@ -1049,11 +2355,14 @@ export interface operations {
1049
2355
  content: {
1050
2356
  "application/json": {
1051
2357
  keys: {
2358
+ llmModels: (string[] | null) | null;
1052
2359
  id: string;
1053
2360
  name: string;
1054
2361
  /** @description Full API key */
1055
2362
  key: string;
1056
2363
  status: string;
2364
+ /** @description What this key is allowed to do. */
2365
+ scopes: string[];
1057
2366
  lastUsedAt: (string | null) | null;
1058
2367
  expiresAt: (string | null) | null;
1059
2368
  createdAt: string;
@@ -1063,11 +2372,14 @@ export interface operations {
1063
2372
  };
1064
2373
  "multipart/form-data": {
1065
2374
  keys: {
2375
+ llmModels: (string[] | null) | null;
1066
2376
  id: string;
1067
2377
  name: string;
1068
2378
  /** @description Full API key */
1069
2379
  key: string;
1070
2380
  status: string;
2381
+ /** @description What this key is allowed to do. */
2382
+ scopes: string[];
1071
2383
  lastUsedAt: (string | null) | null;
1072
2384
  expiresAt: (string | null) | null;
1073
2385
  createdAt: string;
@@ -1077,11 +2389,14 @@ export interface operations {
1077
2389
  };
1078
2390
  "text/plain": {
1079
2391
  keys: {
2392
+ llmModels: (string[] | null) | null;
1080
2393
  id: string;
1081
2394
  name: string;
1082
2395
  /** @description Full API key */
1083
2396
  key: string;
1084
2397
  status: string;
2398
+ /** @description What this key is allowed to do. */
2399
+ scopes: string[];
1085
2400
  lastUsedAt: (string | null) | null;
1086
2401
  expiresAt: (string | null) | null;
1087
2402
  createdAt: string;
@@ -1103,22 +2418,31 @@ export interface operations {
1103
2418
  requestBody: {
1104
2419
  content: {
1105
2420
  "application/json": {
2421
+ llmModels?: (string[] | null) | null;
1106
2422
  /** @description A descriptive name for the API key. */
1107
2423
  name: string;
1108
2424
  /** @description Key expiration time in seconds. If not provided, key never expires. */
1109
2425
  expiresIn?: number;
2426
+ /** @description What the key may do. Must be a subset of the scopes the calling credential holds. Defaults to the caller's own scopes. */
2427
+ scopes?: string[];
1110
2428
  };
1111
2429
  "multipart/form-data": {
2430
+ llmModels?: (string[] | null) | null;
1112
2431
  /** @description A descriptive name for the API key. */
1113
2432
  name: string;
1114
2433
  /** @description Key expiration time in seconds. If not provided, key never expires. */
1115
2434
  expiresIn?: number;
2435
+ /** @description What the key may do. Must be a subset of the scopes the calling credential holds. Defaults to the caller's own scopes. */
2436
+ scopes?: string[];
1116
2437
  };
1117
2438
  "text/plain": {
2439
+ llmModels?: (string[] | null) | null;
1118
2440
  /** @description A descriptive name for the API key. */
1119
2441
  name: string;
1120
2442
  /** @description Key expiration time in seconds. If not provided, key never expires. */
1121
2443
  expiresIn?: number;
2444
+ /** @description What the key may do. Must be a subset of the scopes the calling credential holds. Defaults to the caller's own scopes. */
2445
+ scopes?: string[];
1122
2446
  };
1123
2447
  };
1124
2448
  };
@@ -1129,29 +2453,38 @@ export interface operations {
1129
2453
  };
1130
2454
  content: {
1131
2455
  "application/json": {
2456
+ llmModels: (string[] | null) | null;
1132
2457
  /** @description The full API key. */
1133
2458
  key: string;
1134
2459
  id: string;
1135
2460
  name: string;
1136
2461
  status: string;
2462
+ /** @description What this key is allowed to do. */
2463
+ scopes: string[];
1137
2464
  expiresAt: (string | null) | null;
1138
2465
  createdAt: string;
1139
2466
  };
1140
2467
  "multipart/form-data": {
2468
+ llmModels: (string[] | null) | null;
1141
2469
  /** @description The full API key. */
1142
2470
  key: string;
1143
2471
  id: string;
1144
2472
  name: string;
1145
2473
  status: string;
2474
+ /** @description What this key is allowed to do. */
2475
+ scopes: string[];
1146
2476
  expiresAt: (string | null) | null;
1147
2477
  createdAt: string;
1148
2478
  };
1149
2479
  "text/plain": {
2480
+ llmModels: (string[] | null) | null;
1150
2481
  /** @description The full API key. */
1151
2482
  key: string;
1152
2483
  id: string;
1153
2484
  name: string;
1154
2485
  status: string;
2486
+ /** @description What this key is allowed to do. */
2487
+ scopes: string[];
1155
2488
  expiresAt: (string | null) | null;
1156
2489
  createdAt: string;
1157
2490
  };
@@ -1176,33 +2509,42 @@ export interface operations {
1176
2509
  };
1177
2510
  content: {
1178
2511
  "application/json": {
2512
+ llmModels: (string[] | null) | null;
1179
2513
  id: string;
1180
2514
  name: string;
1181
2515
  /** @description Full API key */
1182
2516
  key: string;
1183
2517
  status: string;
2518
+ /** @description What this key is allowed to do. */
2519
+ scopes: string[];
1184
2520
  lastUsedAt: (string | null) | null;
1185
2521
  expiresAt: (string | null) | null;
1186
2522
  createdAt: string;
1187
2523
  updatedAt: string;
1188
2524
  };
1189
2525
  "multipart/form-data": {
2526
+ llmModels: (string[] | null) | null;
1190
2527
  id: string;
1191
2528
  name: string;
1192
2529
  /** @description Full API key */
1193
2530
  key: string;
1194
2531
  status: string;
2532
+ /** @description What this key is allowed to do. */
2533
+ scopes: string[];
1195
2534
  lastUsedAt: (string | null) | null;
1196
2535
  expiresAt: (string | null) | null;
1197
2536
  createdAt: string;
1198
2537
  updatedAt: string;
1199
2538
  };
1200
2539
  "text/plain": {
2540
+ llmModels: (string[] | null) | null;
1201
2541
  id: string;
1202
2542
  name: string;
1203
2543
  /** @description Full API key */
1204
2544
  key: string;
1205
2545
  status: string;
2546
+ /** @description What this key is allowed to do. */
2547
+ scopes: string[];
1206
2548
  lastUsedAt: (string | null) | null;
1207
2549
  expiresAt: (string | null) | null;
1208
2550
  createdAt: string;
@@ -1224,18 +2566,21 @@ export interface operations {
1224
2566
  requestBody: {
1225
2567
  content: {
1226
2568
  "application/json": {
2569
+ llmModels?: (string[] | null) | null;
1227
2570
  /** @description Update the key name. */
1228
2571
  name?: string;
1229
2572
  /** @description Update the key status. */
1230
2573
  status?: "active" | "disabled";
1231
2574
  };
1232
2575
  "multipart/form-data": {
2576
+ llmModels?: (string[] | null) | null;
1233
2577
  /** @description Update the key name. */
1234
2578
  name?: string;
1235
2579
  /** @description Update the key status. */
1236
2580
  status?: "active" | "disabled";
1237
2581
  };
1238
2582
  "text/plain": {
2583
+ llmModels?: (string[] | null) | null;
1239
2584
  /** @description Update the key name. */
1240
2585
  name?: string;
1241
2586
  /** @description Update the key status. */
@@ -1250,33 +2595,42 @@ export interface operations {
1250
2595
  };
1251
2596
  content: {
1252
2597
  "application/json": {
2598
+ llmModels: (string[] | null) | null;
1253
2599
  id: string;
1254
2600
  name: string;
1255
2601
  /** @description Full API key */
1256
2602
  key: string;
1257
2603
  status: string;
2604
+ /** @description What this key is allowed to do. */
2605
+ scopes: string[];
1258
2606
  lastUsedAt: (string | null) | null;
1259
2607
  expiresAt: (string | null) | null;
1260
2608
  createdAt: string;
1261
2609
  updatedAt: string;
1262
2610
  };
1263
2611
  "multipart/form-data": {
2612
+ llmModels: (string[] | null) | null;
1264
2613
  id: string;
1265
2614
  name: string;
1266
2615
  /** @description Full API key */
1267
2616
  key: string;
1268
2617
  status: string;
2618
+ /** @description What this key is allowed to do. */
2619
+ scopes: string[];
1269
2620
  lastUsedAt: (string | null) | null;
1270
2621
  expiresAt: (string | null) | null;
1271
2622
  createdAt: string;
1272
2623
  updatedAt: string;
1273
2624
  };
1274
2625
  "text/plain": {
2626
+ llmModels: (string[] | null) | null;
1275
2627
  id: string;
1276
2628
  name: string;
1277
2629
  /** @description Full API key */
1278
2630
  key: string;
1279
2631
  status: string;
2632
+ /** @description What this key is allowed to do. */
2633
+ scopes: string[];
1280
2634
  lastUsedAt: (string | null) | null;
1281
2635
  expiresAt: (string | null) | null;
1282
2636
  createdAt: string;
@@ -1710,6 +3064,238 @@ export interface operations {
1710
3064
  };
1711
3065
  };
1712
3066
  };
3067
+ postCreditsInternalLlmFinalize: {
3068
+ parameters: {
3069
+ query?: never;
3070
+ header?: never;
3071
+ path?: never;
3072
+ cookie?: never;
3073
+ };
3074
+ requestBody: {
3075
+ content: {
3076
+ "application/json": {
3077
+ /** Format: uuid */
3078
+ requestId: string;
3079
+ usage: {
3080
+ promptTokens: string | number;
3081
+ completionTokens: string | number;
3082
+ costNano: string | number;
3083
+ estimated?: boolean;
3084
+ streamed?: boolean;
3085
+ status: string | number;
3086
+ };
3087
+ };
3088
+ "multipart/form-data": {
3089
+ /** Format: uuid */
3090
+ requestId: string;
3091
+ usage: {
3092
+ promptTokens: string | number;
3093
+ completionTokens: string | number;
3094
+ costNano: string | number;
3095
+ estimated?: boolean;
3096
+ streamed?: boolean;
3097
+ status: string | number;
3098
+ };
3099
+ };
3100
+ "text/plain": {
3101
+ /** Format: uuid */
3102
+ requestId: string;
3103
+ usage: {
3104
+ promptTokens: string | number;
3105
+ completionTokens: string | number;
3106
+ costNano: string | number;
3107
+ estimated?: boolean;
3108
+ streamed?: boolean;
3109
+ status: string | number;
3110
+ };
3111
+ };
3112
+ };
3113
+ };
3114
+ responses: {
3115
+ 200: {
3116
+ headers: {
3117
+ [name: string]: unknown;
3118
+ };
3119
+ content?: never;
3120
+ };
3121
+ };
3122
+ };
3123
+ getCreditsLlmUsage: {
3124
+ parameters: {
3125
+ query?: {
3126
+ limit?: string | number;
3127
+ offset?: string | number;
3128
+ };
3129
+ header?: never;
3130
+ path?: never;
3131
+ cookie?: never;
3132
+ };
3133
+ requestBody?: never;
3134
+ responses: {
3135
+ 200: {
3136
+ headers: {
3137
+ [name: string]: unknown;
3138
+ };
3139
+ content?: never;
3140
+ };
3141
+ };
3142
+ };
3143
+ getCreditsInternalLlmModels: {
3144
+ parameters: {
3145
+ query?: never;
3146
+ header?: never;
3147
+ path?: never;
3148
+ cookie?: never;
3149
+ };
3150
+ requestBody?: never;
3151
+ responses: {
3152
+ 200: {
3153
+ headers: {
3154
+ [name: string]: unknown;
3155
+ };
3156
+ content?: never;
3157
+ };
3158
+ };
3159
+ };
3160
+ getCreditsAdminLlmTemplates: {
3161
+ parameters: {
3162
+ query?: never;
3163
+ header?: never;
3164
+ path?: never;
3165
+ cookie?: never;
3166
+ };
3167
+ requestBody?: never;
3168
+ responses: {
3169
+ 200: {
3170
+ headers: {
3171
+ [name: string]: unknown;
3172
+ };
3173
+ content?: never;
3174
+ };
3175
+ };
3176
+ };
3177
+ getCreditsAdminLlmModels: {
3178
+ parameters: {
3179
+ query?: never;
3180
+ header?: never;
3181
+ path?: never;
3182
+ cookie?: never;
3183
+ };
3184
+ requestBody?: never;
3185
+ responses: {
3186
+ 200: {
3187
+ headers: {
3188
+ [name: string]: unknown;
3189
+ };
3190
+ content?: never;
3191
+ };
3192
+ };
3193
+ };
3194
+ postCreditsAdminLlmModels: {
3195
+ parameters: {
3196
+ query?: never;
3197
+ header?: never;
3198
+ path?: never;
3199
+ cookie?: never;
3200
+ };
3201
+ requestBody: {
3202
+ content: {
3203
+ "application/json": {
3204
+ templateId: string;
3205
+ sourceCommit: string;
3206
+ market: string;
3207
+ replicas: string | number;
3208
+ maxHourlyUsd?: number;
3209
+ pricing: {
3210
+ prompt: string;
3211
+ completion: string;
3212
+ };
3213
+ };
3214
+ "multipart/form-data": {
3215
+ templateId: string;
3216
+ sourceCommit: string;
3217
+ market: string;
3218
+ replicas: string | number;
3219
+ maxHourlyUsd?: number;
3220
+ pricing: {
3221
+ prompt: string;
3222
+ completion: string;
3223
+ };
3224
+ };
3225
+ "text/plain": {
3226
+ templateId: string;
3227
+ sourceCommit: string;
3228
+ market: string;
3229
+ replicas: string | number;
3230
+ maxHourlyUsd?: number;
3231
+ pricing: {
3232
+ prompt: string;
3233
+ completion: string;
3234
+ };
3235
+ };
3236
+ };
3237
+ };
3238
+ responses: {
3239
+ 200: {
3240
+ headers: {
3241
+ [name: string]: unknown;
3242
+ };
3243
+ content?: never;
3244
+ };
3245
+ };
3246
+ };
3247
+ patchCreditsAdminLlmModelsById: {
3248
+ parameters: {
3249
+ query?: never;
3250
+ header?: never;
3251
+ path: {
3252
+ id: string;
3253
+ };
3254
+ cookie?: never;
3255
+ };
3256
+ requestBody: {
3257
+ content: {
3258
+ "application/json": {
3259
+ enabled?: boolean;
3260
+ pricing?: {
3261
+ prompt: string;
3262
+ completion: string;
3263
+ };
3264
+ maxHourlyUsd?: number;
3265
+ replicas?: string | number;
3266
+ market?: string;
3267
+ };
3268
+ "multipart/form-data": {
3269
+ enabled?: boolean;
3270
+ pricing?: {
3271
+ prompt: string;
3272
+ completion: string;
3273
+ };
3274
+ maxHourlyUsd?: number;
3275
+ replicas?: string | number;
3276
+ market?: string;
3277
+ };
3278
+ "text/plain": {
3279
+ enabled?: boolean;
3280
+ pricing?: {
3281
+ prompt: string;
3282
+ completion: string;
3283
+ };
3284
+ maxHourlyUsd?: number;
3285
+ replicas?: string | number;
3286
+ market?: string;
3287
+ };
3288
+ };
3289
+ };
3290
+ responses: {
3291
+ 200: {
3292
+ headers: {
3293
+ [name: string]: unknown;
3294
+ };
3295
+ content?: never;
3296
+ };
3297
+ };
3298
+ };
1713
3299
  getTemplates: {
1714
3300
  parameters: {
1715
3301
  query?: never;
@@ -1930,7 +3516,7 @@ export interface operations {
1930
3516
  ipfsHash: string;
1931
3517
  /** @description Market address */
1932
3518
  market: string;
1933
- /** @description Job timeout in seconds (default: 3600) */
3519
+ /** @description Job timeout in seconds (default: 3600). Credit-paid jobs must run at least 3600 seconds; a shorter timeout returns 400. */
1934
3520
  timeout?: number;
1935
3521
  /** @description Optional node address */
1936
3522
  node?: string;
@@ -1940,7 +3526,7 @@ export interface operations {
1940
3526
  ipfsHash: string;
1941
3527
  /** @description Market address */
1942
3528
  market: string;
1943
- /** @description Job timeout in seconds (default: 3600) */
3529
+ /** @description Job timeout in seconds (default: 3600). Credit-paid jobs must run at least 3600 seconds; a shorter timeout returns 400. */
1944
3530
  timeout?: number;
1945
3531
  /** @description Optional node address */
1946
3532
  node?: string;
@@ -1950,7 +3536,7 @@ export interface operations {
1950
3536
  ipfsHash: string;
1951
3537
  /** @description Market address */
1952
3538
  market: string;
1953
- /** @description Job timeout in seconds (default: 3600) */
3539
+ /** @description Job timeout in seconds (default: 3600). Credit-paid jobs must run at least 3600 seconds; a shorter timeout returns 400. */
1954
3540
  timeout?: number;
1955
3541
  /** @description Optional node address */
1956
3542
  node?: string;
@@ -2026,7 +3612,7 @@ export interface operations {
2026
3612
  ipfsHash: string;
2027
3613
  /** @description Market address */
2028
3614
  market: string;
2029
- /** @description Job timeout in seconds (default: 3600) */
3615
+ /** @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
3616
  timeout?: number;
2031
3617
  }[];
2032
3618
  };
@@ -2037,7 +3623,7 @@ export interface operations {
2037
3623
  ipfsHash: string;
2038
3624
  /** @description Market address */
2039
3625
  market: string;
2040
- /** @description Job timeout in seconds (default: 3600) */
3626
+ /** @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
3627
  timeout?: number;
2042
3628
  }[];
2043
3629
  };
@@ -2048,7 +3634,7 @@ export interface operations {
2048
3634
  ipfsHash: string;
2049
3635
  /** @description Market address */
2050
3636
  market: string;
2051
- /** @description Job timeout in seconds (default: 3600) */
3637
+ /** @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
3638
  timeout?: number;
2053
3639
  }[];
2054
3640
  };
@@ -2438,11 +4024,70 @@ export interface operations {
2438
4024
  email: string;
2439
4025
  };
2440
4026
  "text/plain": {
2441
- /**
2442
- * Format: email
2443
- * @description Email address to subscribe to the newsletter.
2444
- */
2445
- email: string;
4027
+ /**
4028
+ * Format: email
4029
+ * @description Email address to subscribe to the newsletter.
4030
+ */
4031
+ email: string;
4032
+ };
4033
+ };
4034
+ };
4035
+ responses: {
4036
+ 200: {
4037
+ headers: {
4038
+ [name: string]: unknown;
4039
+ };
4040
+ content: {
4041
+ "application/json": {
4042
+ success: boolean;
4043
+ };
4044
+ "multipart/form-data": {
4045
+ success: boolean;
4046
+ };
4047
+ "text/plain": {
4048
+ success: boolean;
4049
+ };
4050
+ };
4051
+ };
4052
+ };
4053
+ };
4054
+ postPaymentsWebhooksStripe: {
4055
+ parameters: {
4056
+ query?: never;
4057
+ header?: never;
4058
+ path?: never;
4059
+ cookie?: never;
4060
+ };
4061
+ requestBody?: never;
4062
+ responses: {
4063
+ 200: {
4064
+ headers: {
4065
+ [name: string]: unknown;
4066
+ };
4067
+ content?: never;
4068
+ };
4069
+ };
4070
+ };
4071
+ "postPaymentsSetup-intent": {
4072
+ parameters: {
4073
+ query?: never;
4074
+ header?: never;
4075
+ path?: never;
4076
+ cookie?: never;
4077
+ };
4078
+ requestBody: {
4079
+ content: {
4080
+ "application/json": {
4081
+ paymentMethodId: string;
4082
+ requireThreeDSecure?: boolean;
4083
+ };
4084
+ "multipart/form-data": {
4085
+ paymentMethodId: string;
4086
+ requireThreeDSecure?: boolean;
4087
+ };
4088
+ "text/plain": {
4089
+ paymentMethodId: string;
4090
+ requireThreeDSecure?: boolean;
2446
4091
  };
2447
4092
  };
2448
4093
  };
@@ -2453,36 +4098,37 @@ export interface operations {
2453
4098
  };
2454
4099
  content: {
2455
4100
  "application/json": {
2456
- success: boolean;
4101
+ accepted: boolean;
4102
+ verificationError: (string | null) | null;
4103
+ paymentVerified: boolean;
4104
+ threeDSecureAuthenticated: boolean;
4105
+ requiresAction: boolean;
4106
+ clientSecret: (string | null) | null;
4107
+ setupIntentId: (string | null) | null;
2457
4108
  };
2458
4109
  "multipart/form-data": {
2459
- success: boolean;
4110
+ accepted: boolean;
4111
+ verificationError: (string | null) | null;
4112
+ paymentVerified: boolean;
4113
+ threeDSecureAuthenticated: boolean;
4114
+ requiresAction: boolean;
4115
+ clientSecret: (string | null) | null;
4116
+ setupIntentId: (string | null) | null;
2460
4117
  };
2461
4118
  "text/plain": {
2462
- success: boolean;
4119
+ accepted: boolean;
4120
+ verificationError: (string | null) | null;
4121
+ paymentVerified: boolean;
4122
+ threeDSecureAuthenticated: boolean;
4123
+ requiresAction: boolean;
4124
+ clientSecret: (string | null) | null;
4125
+ setupIntentId: (string | null) | null;
2463
4126
  };
2464
4127
  };
2465
4128
  };
2466
4129
  };
2467
4130
  };
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": {
4131
+ "postPaymentsSetup-intentConfirm": {
2486
4132
  parameters: {
2487
4133
  query?: never;
2488
4134
  header?: never;
@@ -2492,13 +4138,13 @@ export interface operations {
2492
4138
  requestBody: {
2493
4139
  content: {
2494
4140
  "application/json": {
2495
- paymentMethodId: string;
4141
+ setupIntentId: string;
2496
4142
  };
2497
4143
  "multipart/form-data": {
2498
- paymentMethodId: string;
4144
+ setupIntentId: string;
2499
4145
  };
2500
4146
  "text/plain": {
2501
- paymentMethodId: string;
4147
+ setupIntentId: string;
2502
4148
  };
2503
4149
  };
2504
4150
  };
@@ -2512,6 +4158,7 @@ export interface operations {
2512
4158
  accepted: boolean;
2513
4159
  verificationError: (string | null) | null;
2514
4160
  paymentVerified: boolean;
4161
+ threeDSecureAuthenticated: boolean;
2515
4162
  requiresAction: boolean;
2516
4163
  clientSecret: (string | null) | null;
2517
4164
  setupIntentId: (string | null) | null;
@@ -2520,6 +4167,7 @@ export interface operations {
2520
4167
  accepted: boolean;
2521
4168
  verificationError: (string | null) | null;
2522
4169
  paymentVerified: boolean;
4170
+ threeDSecureAuthenticated: boolean;
2523
4171
  requiresAction: boolean;
2524
4172
  clientSecret: (string | null) | null;
2525
4173
  setupIntentId: (string | null) | null;
@@ -2528,6 +4176,7 @@ export interface operations {
2528
4176
  accepted: boolean;
2529
4177
  verificationError: (string | null) | null;
2530
4178
  paymentVerified: boolean;
4179
+ threeDSecureAuthenticated: boolean;
2531
4180
  requiresAction: boolean;
2532
4181
  clientSecret: (string | null) | null;
2533
4182
  setupIntentId: (string | null) | null;
@@ -2707,14 +4356,59 @@ export interface operations {
2707
4356
  "application/json": {
2708
4357
  clientSecret: (string | null) | null;
2709
4358
  paymentIntentId: string;
4359
+ requiresAction: boolean;
2710
4360
  };
2711
4361
  "multipart/form-data": {
2712
4362
  clientSecret: (string | null) | null;
2713
4363
  paymentIntentId: string;
4364
+ requiresAction: boolean;
2714
4365
  };
2715
4366
  "text/plain": {
2716
4367
  clientSecret: (string | null) | null;
2717
4368
  paymentIntentId: string;
4369
+ requiresAction: boolean;
4370
+ };
4371
+ };
4372
+ };
4373
+ };
4374
+ };
4375
+ "postPaymentsPayment-intentConfirm": {
4376
+ parameters: {
4377
+ query?: never;
4378
+ header?: never;
4379
+ path?: never;
4380
+ cookie?: never;
4381
+ };
4382
+ requestBody: {
4383
+ content: {
4384
+ "application/json": {
4385
+ paymentIntentId: string;
4386
+ };
4387
+ "multipart/form-data": {
4388
+ paymentIntentId: string;
4389
+ };
4390
+ "text/plain": {
4391
+ paymentIntentId: string;
4392
+ };
4393
+ };
4394
+ };
4395
+ responses: {
4396
+ 200: {
4397
+ headers: {
4398
+ [name: string]: unknown;
4399
+ };
4400
+ content: {
4401
+ "application/json": {
4402
+ success: boolean;
4403
+ paymentIntentId: string;
4404
+ };
4405
+ "multipart/form-data": {
4406
+ success: boolean;
4407
+ paymentIntentId: string;
4408
+ };
4409
+ "text/plain": {
4410
+ success: boolean;
4411
+ paymentIntentId: string;
2718
4412
  };
2719
4413
  };
2720
4414
  };
@@ -2768,6 +4462,375 @@ export interface operations {
2768
4462
  };
2769
4463
  };
2770
4464
  };
4465
+ "getOauth-apps": {
4466
+ parameters: {
4467
+ query?: never;
4468
+ header?: never;
4469
+ path?: never;
4470
+ cookie?: never;
4471
+ };
4472
+ requestBody?: never;
4473
+ responses: {
4474
+ 200: {
4475
+ headers: {
4476
+ [name: string]: unknown;
4477
+ };
4478
+ content: {
4479
+ "application/json": {
4480
+ apps: {
4481
+ clientId: string;
4482
+ name: string;
4483
+ redirectUris: string[];
4484
+ logoUri?: string;
4485
+ clientUri?: string;
4486
+ tosUri?: string;
4487
+ policyUri?: string;
4488
+ confidential: boolean;
4489
+ /** @description The app's scope ceiling. */
4490
+ scopes: string[];
4491
+ createdAt?: string;
4492
+ }[];
4493
+ total: number;
4494
+ limit: number;
4495
+ };
4496
+ "multipart/form-data": {
4497
+ apps: {
4498
+ clientId: string;
4499
+ name: string;
4500
+ redirectUris: string[];
4501
+ logoUri?: string;
4502
+ clientUri?: string;
4503
+ tosUri?: string;
4504
+ policyUri?: string;
4505
+ confidential: boolean;
4506
+ /** @description The app's scope ceiling. */
4507
+ scopes: string[];
4508
+ createdAt?: string;
4509
+ }[];
4510
+ total: number;
4511
+ limit: number;
4512
+ };
4513
+ "text/plain": {
4514
+ apps: {
4515
+ clientId: string;
4516
+ name: string;
4517
+ redirectUris: string[];
4518
+ logoUri?: string;
4519
+ clientUri?: string;
4520
+ tosUri?: string;
4521
+ policyUri?: string;
4522
+ confidential: boolean;
4523
+ /** @description The app's scope ceiling. */
4524
+ scopes: string[];
4525
+ createdAt?: string;
4526
+ }[];
4527
+ total: number;
4528
+ limit: number;
4529
+ };
4530
+ };
4531
+ };
4532
+ };
4533
+ };
4534
+ "postOauth-apps": {
4535
+ parameters: {
4536
+ query?: never;
4537
+ header?: never;
4538
+ path?: never;
4539
+ cookie?: never;
4540
+ };
4541
+ requestBody: {
4542
+ content: {
4543
+ "application/json": {
4544
+ /** @description Display name shown to users on the Nosana consent screen. */
4545
+ name: string;
4546
+ /** @description Exact redirect URIs the authorization code may be returned to. */
4547
+ redirectUris: string[];
4548
+ /** @description Logo URL shown on the consent screen. */
4549
+ logoUri?: string;
4550
+ /** @description The app's homepage URL. */
4551
+ clientUri?: string;
4552
+ /** @description Terms of service URL. */
4553
+ tosUri?: string;
4554
+ /** @description Privacy policy URL. */
4555
+ policyUri?: string;
4556
+ /** @description Server-side app that gets a client secret (no PKCE required). Defaults to false (public app, PKCE). */
4557
+ confidential?: boolean;
4558
+ /** @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. */
4559
+ scopes?: string[];
4560
+ };
4561
+ "multipart/form-data": {
4562
+ /** @description Display name shown to users on the Nosana consent screen. */
4563
+ name: string;
4564
+ /** @description Exact redirect URIs the authorization code may be returned to. */
4565
+ redirectUris: string[];
4566
+ /** @description Logo URL shown on the consent screen. */
4567
+ logoUri?: string;
4568
+ /** @description The app's homepage URL. */
4569
+ clientUri?: string;
4570
+ /** @description Terms of service URL. */
4571
+ tosUri?: string;
4572
+ /** @description Privacy policy URL. */
4573
+ policyUri?: string;
4574
+ /** @description Server-side app that gets a client secret (no PKCE required). Defaults to false (public app, PKCE). */
4575
+ confidential?: boolean;
4576
+ /** @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. */
4577
+ scopes?: string[];
4578
+ };
4579
+ "text/plain": {
4580
+ /** @description Display name shown to users on the Nosana consent screen. */
4581
+ name: string;
4582
+ /** @description Exact redirect URIs the authorization code may be returned to. */
4583
+ redirectUris: string[];
4584
+ /** @description Logo URL shown on the consent screen. */
4585
+ logoUri?: string;
4586
+ /** @description The app's homepage URL. */
4587
+ clientUri?: string;
4588
+ /** @description Terms of service URL. */
4589
+ tosUri?: string;
4590
+ /** @description Privacy policy URL. */
4591
+ policyUri?: string;
4592
+ /** @description Server-side app that gets a client secret (no PKCE required). Defaults to false (public app, PKCE). */
4593
+ confidential?: boolean;
4594
+ /** @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. */
4595
+ scopes?: string[];
4596
+ };
4597
+ };
4598
+ };
4599
+ responses: {
4600
+ 200: {
4601
+ headers: {
4602
+ [name: string]: unknown;
4603
+ };
4604
+ content: {
4605
+ "application/json": {
4606
+ clientId: string;
4607
+ name: string;
4608
+ redirectUris: string[];
4609
+ logoUri?: string;
4610
+ clientUri?: string;
4611
+ tosUri?: string;
4612
+ policyUri?: string;
4613
+ confidential: boolean;
4614
+ /** @description The app's scope ceiling. */
4615
+ scopes: string[];
4616
+ createdAt?: string;
4617
+ /** @description Confidential apps only — shown once, store it securely. */
4618
+ clientSecret?: string;
4619
+ };
4620
+ "multipart/form-data": {
4621
+ clientId: string;
4622
+ name: string;
4623
+ redirectUris: string[];
4624
+ logoUri?: string;
4625
+ clientUri?: string;
4626
+ tosUri?: string;
4627
+ policyUri?: string;
4628
+ confidential: boolean;
4629
+ /** @description The app's scope ceiling. */
4630
+ scopes: string[];
4631
+ createdAt?: string;
4632
+ /** @description Confidential apps only — shown once, store it securely. */
4633
+ clientSecret?: string;
4634
+ };
4635
+ "text/plain": {
4636
+ clientId: string;
4637
+ name: string;
4638
+ redirectUris: string[];
4639
+ logoUri?: string;
4640
+ clientUri?: string;
4641
+ tosUri?: string;
4642
+ policyUri?: string;
4643
+ confidential: boolean;
4644
+ /** @description The app's scope ceiling. */
4645
+ scopes: string[];
4646
+ createdAt?: string;
4647
+ /** @description Confidential apps only — shown once, store it securely. */
4648
+ clientSecret?: string;
4649
+ };
4650
+ };
4651
+ };
4652
+ };
4653
+ };
4654
+ "getOauth-appsById": {
4655
+ parameters: {
4656
+ query?: never;
4657
+ header?: never;
4658
+ path: {
4659
+ id: string;
4660
+ };
4661
+ cookie?: never;
4662
+ };
4663
+ requestBody?: never;
4664
+ responses: {
4665
+ 200: {
4666
+ headers: {
4667
+ [name: string]: unknown;
4668
+ };
4669
+ content: {
4670
+ "application/json": {
4671
+ clientId: string;
4672
+ name: string;
4673
+ redirectUris: string[];
4674
+ logoUri?: string;
4675
+ clientUri?: string;
4676
+ tosUri?: string;
4677
+ policyUri?: string;
4678
+ confidential: boolean;
4679
+ /** @description The app's scope ceiling. */
4680
+ scopes: string[];
4681
+ createdAt?: string;
4682
+ };
4683
+ "multipart/form-data": {
4684
+ clientId: string;
4685
+ name: string;
4686
+ redirectUris: string[];
4687
+ logoUri?: string;
4688
+ clientUri?: string;
4689
+ tosUri?: string;
4690
+ policyUri?: string;
4691
+ confidential: boolean;
4692
+ /** @description The app's scope ceiling. */
4693
+ scopes: string[];
4694
+ createdAt?: string;
4695
+ };
4696
+ "text/plain": {
4697
+ clientId: string;
4698
+ name: string;
4699
+ redirectUris: string[];
4700
+ logoUri?: string;
4701
+ clientUri?: string;
4702
+ tosUri?: string;
4703
+ policyUri?: string;
4704
+ confidential: boolean;
4705
+ /** @description The app's scope ceiling. */
4706
+ scopes: string[];
4707
+ createdAt?: string;
4708
+ };
4709
+ };
4710
+ };
4711
+ };
4712
+ };
4713
+ "postOauth-appsByIdUpdate": {
4714
+ parameters: {
4715
+ query?: never;
4716
+ header?: never;
4717
+ path: {
4718
+ id: string;
4719
+ };
4720
+ cookie?: never;
4721
+ };
4722
+ requestBody: {
4723
+ content: {
4724
+ "application/json": {
4725
+ name?: string;
4726
+ redirectUris?: string[];
4727
+ logoUri?: string;
4728
+ clientUri?: string;
4729
+ tosUri?: string;
4730
+ policyUri?: string;
4731
+ /** @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. */
4732
+ scopes?: string[];
4733
+ };
4734
+ "multipart/form-data": {
4735
+ name?: string;
4736
+ redirectUris?: string[];
4737
+ logoUri?: string;
4738
+ clientUri?: string;
4739
+ tosUri?: string;
4740
+ policyUri?: string;
4741
+ /** @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. */
4742
+ scopes?: string[];
4743
+ };
4744
+ "text/plain": {
4745
+ name?: string;
4746
+ redirectUris?: string[];
4747
+ logoUri?: string;
4748
+ clientUri?: string;
4749
+ tosUri?: string;
4750
+ policyUri?: string;
4751
+ /** @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. */
4752
+ scopes?: string[];
4753
+ };
4754
+ };
4755
+ };
4756
+ responses: {
4757
+ 200: {
4758
+ headers: {
4759
+ [name: string]: unknown;
4760
+ };
4761
+ content: {
4762
+ "application/json": {
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
+ };
4775
+ "multipart/form-data": {
4776
+ clientId: string;
4777
+ name: string;
4778
+ redirectUris: string[];
4779
+ logoUri?: string;
4780
+ clientUri?: string;
4781
+ tosUri?: string;
4782
+ policyUri?: string;
4783
+ confidential: boolean;
4784
+ /** @description The app's scope ceiling. */
4785
+ scopes: string[];
4786
+ createdAt?: string;
4787
+ };
4788
+ "text/plain": {
4789
+ clientId: string;
4790
+ name: string;
4791
+ redirectUris: string[];
4792
+ logoUri?: string;
4793
+ clientUri?: string;
4794
+ tosUri?: string;
4795
+ policyUri?: string;
4796
+ confidential: boolean;
4797
+ /** @description The app's scope ceiling. */
4798
+ scopes: string[];
4799
+ createdAt?: string;
4800
+ };
4801
+ };
4802
+ };
4803
+ };
4804
+ };
4805
+ "postOauth-appsByIdDelete": {
4806
+ parameters: {
4807
+ query?: never;
4808
+ header?: never;
4809
+ path: {
4810
+ id: string;
4811
+ };
4812
+ cookie?: never;
4813
+ };
4814
+ requestBody?: never;
4815
+ responses: {
4816
+ 200: {
4817
+ headers: {
4818
+ [name: string]: unknown;
4819
+ };
4820
+ content: {
4821
+ "application/json": {
4822
+ success: boolean;
4823
+ };
4824
+ "multipart/form-data": {
4825
+ success: boolean;
4826
+ };
4827
+ "text/plain": {
4828
+ success: boolean;
4829
+ };
4830
+ };
4831
+ };
4832
+ };
4833
+ };
2771
4834
  getMetrics: {
2772
4835
  parameters: {
2773
4836
  query?: never;