@bodhiapp/ts-client 0.1.15 → 0.1.17

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.
@@ -1,3 +1,81 @@
1
+ export type AccessRequestActionResponse = {
2
+ /**
3
+ * Updated status after action
4
+ */
5
+ status: AppAccessRequestStatus;
6
+ /**
7
+ * Flow type of the access request
8
+ */
9
+ flow_type: FlowType;
10
+ /**
11
+ * Redirect URL (present for redirect flow)
12
+ */
13
+ redirect_url?: string | null;
14
+ };
15
+ export type AccessRequestReviewResponse = {
16
+ /**
17
+ * Access request ID
18
+ */
19
+ id: string;
20
+ /**
21
+ * App client ID
22
+ */
23
+ app_client_id: string;
24
+ /**
25
+ * App name from KC (if available)
26
+ */
27
+ app_name?: string | null;
28
+ /**
29
+ * App description from KC (if available)
30
+ */
31
+ app_description?: string | null;
32
+ /**
33
+ * Flow type: "redirect" or "popup"
34
+ */
35
+ flow_type: FlowType;
36
+ /**
37
+ * Current status
38
+ */
39
+ status: AppAccessRequestStatus;
40
+ /**
41
+ * Role requested by the app
42
+ */
43
+ requested_role: string;
44
+ /**
45
+ * Resources requested
46
+ */
47
+ requested: RequestedResources;
48
+ /**
49
+ * Tool type information with user instances
50
+ */
51
+ tools_info: Array<ToolTypeReviewInfo>;
52
+ /**
53
+ * MCP server information with user instances
54
+ */
55
+ mcps_info?: Array<McpServerReviewInfo>;
56
+ };
57
+ export type AccessRequestStatusResponse = {
58
+ /**
59
+ * Access request ID
60
+ */
61
+ id: string;
62
+ /**
63
+ * Current status: "draft", "approved", "denied", "failed"
64
+ */
65
+ status: AppAccessRequestStatus;
66
+ /**
67
+ * Role requested by the app
68
+ */
69
+ requested_role: string;
70
+ /**
71
+ * Role approved (present when approved)
72
+ */
73
+ approved_role?: string | null;
74
+ /**
75
+ * Access request scope (present when user-approved with tools)
76
+ */
77
+ access_request_scope?: string | null;
78
+ };
1
79
  /**
2
80
  * Flat enum representing all types of model aliases
3
81
  * Each variant is identified by the source field
@@ -18,10 +96,10 @@ export type ApiAlias = {
18
96
  id: string;
19
97
  api_format: ApiFormat;
20
98
  base_url: string;
21
- models: Array<string>;
99
+ models: JsonVec;
22
100
  prefix?: string | null;
23
101
  forward_all_with_prefix: boolean;
24
- models_cache: Array<string>;
102
+ models_cache: JsonVec;
25
103
  cache_fetched_at: string;
26
104
  created_at: string;
27
105
  updated_at: string;
@@ -112,43 +190,7 @@ export type ApiTokenResponse = {
112
190
  */
113
191
  token: string;
114
192
  };
115
- export type AppAccessRequest = {
116
- app_client_id: string;
117
- /**
118
- * Optional version for cache lookup - if matches cached config, skips auth server call
119
- */
120
- version?: string | null;
121
- /**
122
- * Optional toolset scope IDs to register with resource-client for token exchange
123
- */
124
- toolset_scope_ids?: Array<string> | null;
125
- };
126
- export type AppAccessResponse = {
127
- scope: string;
128
- /**
129
- * List of toolsets the app-client is configured to access
130
- */
131
- toolsets?: Array<AppClientToolset>;
132
- /**
133
- * Version of app-client's toolset configuration on auth server
134
- */
135
- app_client_config_version?: string | null;
136
- };
137
- /**
138
- * Toolset configuration from app-client registration
139
- */
140
- export type AppClientToolset = {
141
- id: string;
142
- scope: string;
143
- /**
144
- * client scope UUID for cache validation
145
- */
146
- scope_id?: string;
147
- /**
148
- * True if scope has been added to resource-client as optional scope
149
- */
150
- added_to_resource_client?: boolean | null;
151
- };
193
+ export type AppAccessRequestStatus = 'draft' | 'approved' | 'denied' | 'failed' | 'expired';
152
194
  /**
153
195
  * Application information and status
154
196
  */
@@ -167,36 +209,51 @@ export type AppInfo = {
167
209
  status: AppStatus;
168
210
  };
169
211
  export type AppRole = ResourceRole | TokenScope | UserScope;
170
- export type AppStatus = 'setup' | 'ready' | 'resource-admin';
212
+ export type AppStatus = 'setup' | 'ready' | 'resource_admin';
171
213
  /**
172
- * App-level configuration for a toolset (admin-controlled)
214
+ * Application-level toolset configuration
173
215
  */
174
216
  export type AppToolsetConfig = {
175
217
  /**
176
- * Toolset identifier (e.g., "builtin-exa-web-search")
218
+ * Toolset type identifier (e.g., "builtin-exa-search")
219
+ */
220
+ toolset_type: string;
221
+ /**
222
+ * Human-readable name (e.g., "Exa Web Search")
223
+ */
224
+ name: string;
225
+ /**
226
+ * Description of the toolset
177
227
  */
178
- toolset_id: string;
228
+ description: string;
179
229
  /**
180
- * Whether the toolset is enabled for this app instance
230
+ * Whether this toolset type is enabled at app level
181
231
  */
182
232
  enabled: boolean;
183
233
  /**
184
- * User ID of the admin who last updated this configuration
234
+ * User who last updated this config
185
235
  */
186
236
  updated_by: string;
187
237
  /**
188
- * When this configuration was created
238
+ * When this config was created
189
239
  */
190
240
  created_at: string;
191
241
  /**
192
- * When this configuration was last updated
242
+ * When this config was last updated
193
243
  */
194
244
  updated_at: string;
195
245
  };
196
- /**
197
- * The app-level toolset configuration
198
- */
199
- export type AppToolsetConfigResponse = AppToolsetConfig;
246
+ export type ApprovalStatus = 'approved' | 'denied';
247
+ export type ApproveAccessRequestBody = {
248
+ /**
249
+ * Role to grant for the approved request (scope_user_user or scope_user_power_user)
250
+ */
251
+ approved_role: UserScope;
252
+ /**
253
+ * Approved resources with selections
254
+ */
255
+ approved: ApprovedResources;
256
+ };
200
257
  /**
201
258
  * Request body for approving access with role assignment
202
259
  */
@@ -206,6 +263,10 @@ export type ApproveUserAccessRequest = {
206
263
  */
207
264
  role: ResourceRole;
208
265
  };
266
+ export type ApprovedResources = {
267
+ toolsets?: Array<ToolsetApproval>;
268
+ mcps?: Array<McpApproval>;
269
+ };
209
270
  export type AuthCallbackRequest = {
210
271
  /**
211
272
  * OAuth authorization code from successful authentication (required for success flow)
@@ -692,6 +753,42 @@ export type ContextLimits = {
692
753
  max_input_tokens?: number | null;
693
754
  max_output_tokens?: number | null;
694
755
  };
756
+ export type CopyAliasRequest = {
757
+ alias: string;
758
+ };
759
+ export type CreateAccessRequestBody = {
760
+ /**
761
+ * App client ID from Keycloak
762
+ */
763
+ app_client_id: string;
764
+ /**
765
+ * Flow type: "redirect" or "popup"
766
+ */
767
+ flow_type: FlowType;
768
+ /**
769
+ * Redirect URL for result notification (required for redirect flow)
770
+ */
771
+ redirect_url?: string | null;
772
+ /**
773
+ * Role requested for the external app (scope_user_user or scope_user_power_user)
774
+ */
775
+ requested_role: UserScope;
776
+ requested?: null | RequestedResources;
777
+ };
778
+ export type CreateAccessRequestResponse = {
779
+ /**
780
+ * Access request ID
781
+ */
782
+ id: string;
783
+ /**
784
+ * Status (always "draft")
785
+ */
786
+ status: AppAccessRequestStatus;
787
+ /**
788
+ * Review URL for user to approve/deny
789
+ */
790
+ review_url: string;
791
+ };
695
792
  export type CreateAliasRequest = {
696
793
  alias: string;
697
794
  repo: string;
@@ -742,6 +839,12 @@ export type CreateApiTokenRequest = {
742
839
  */
743
840
  scope: TokenScope;
744
841
  };
842
+ /**
843
+ * Wrapper for creating auth configs with server_id in body instead of path
844
+ */
845
+ export type CreateAuthConfigBody = CreateMcpAuthConfigRequest & {
846
+ mcp_server_id: string;
847
+ };
745
848
  export type CreateChatCompletionRequest = {
746
849
  /**
747
850
  * A list of messages comprising the conversation so far. Depending on the
@@ -1034,18 +1137,62 @@ export type CreateEmbeddingResponse = {
1034
1137
  */
1035
1138
  usage: EmbeddingUsage;
1036
1139
  };
1140
+ /**
1141
+ * Discriminated union for creating any type of MCP auth config.
1142
+ * The JSON `"type"` field determines the variant: `"header"` or `"oauth"`.
1143
+ */
1144
+ export type CreateMcpAuthConfigRequest = {
1145
+ name: string;
1146
+ header_key: string;
1147
+ header_value: string;
1148
+ type: 'header';
1149
+ } | {
1150
+ name: string;
1151
+ client_id: string;
1152
+ authorization_endpoint: string;
1153
+ token_endpoint: string;
1154
+ client_secret?: string | null;
1155
+ scopes?: string | null;
1156
+ /**
1157
+ * `"pre_registered"` (default) or `"dynamic_registration"`
1158
+ */
1159
+ registration_type?: RegistrationType;
1160
+ registration_access_token?: string | null;
1161
+ registration_endpoint?: string | null;
1162
+ token_endpoint_auth_method?: string | null;
1163
+ client_id_issued_at?: number | null;
1164
+ type: 'oauth';
1165
+ };
1166
+ export type CreateMcpRequest = {
1167
+ name: string;
1168
+ slug: string;
1169
+ mcp_server_id: string;
1170
+ description?: string | null;
1171
+ enabled: boolean;
1172
+ tools_cache?: Array<McpTool> | null;
1173
+ tools_filter?: Array<string> | null;
1174
+ auth_type?: McpAuthType;
1175
+ auth_uuid?: string | null;
1176
+ };
1177
+ export type CreateMcpServerRequest = {
1178
+ url: string;
1179
+ name: string;
1180
+ description?: string | null;
1181
+ enabled: boolean;
1182
+ auth_config?: null | CreateMcpAuthConfigRequest;
1183
+ };
1037
1184
  /**
1038
1185
  * Request to create a toolset
1039
1186
  */
1040
1187
  export type CreateToolsetRequest = {
1041
1188
  /**
1042
- * Toolset type identifier (e.g., "builtin-exa-web-search")
1189
+ * Toolset type identifier (e.g., "builtin-exa-search")
1043
1190
  */
1044
1191
  toolset_type: string;
1045
1192
  /**
1046
- * User-defined name for this toolset (2-24 chars, alphanumeric + spaces/dash/underscore)
1193
+ * User-defined slug for this toolset (1-24 chars, alphanumeric + hyphens)
1047
1194
  */
1048
- name: string;
1195
+ slug: string;
1049
1196
  /**
1050
1197
  * Optional description for this toolset
1051
1198
  */
@@ -1122,6 +1269,18 @@ export type DownloadRequest = {
1122
1269
  };
1123
1270
  export type DownloadStatus = 'pending' | 'completed' | 'error';
1124
1271
  export type Duration = string;
1272
+ export type DynamicRegisterRequest = {
1273
+ registration_endpoint: string;
1274
+ redirect_uri: string;
1275
+ scopes?: string | null;
1276
+ };
1277
+ export type DynamicRegisterResponse = {
1278
+ client_id: string;
1279
+ client_secret?: string | null;
1280
+ client_id_issued_at?: number | null;
1281
+ token_endpoint_auth_method?: string | null;
1282
+ registration_access_token?: string | null;
1283
+ };
1125
1284
  /**
1126
1285
  * Represents an embedding vector returned by embedding endpoint.
1127
1286
  */
@@ -1166,9 +1325,11 @@ export type ErrorBody = {
1166
1325
  */
1167
1326
  code?: string | null;
1168
1327
  /**
1169
- * Parameter name that caused the error (for validation errors)
1328
+ * Additional error parameters as key-value pairs (for validation errors)
1170
1329
  */
1171
- param?: string | null;
1330
+ param?: {
1331
+ [key: string]: string;
1332
+ } | null;
1172
1333
  };
1173
1334
  /**
1174
1335
  * Request to execute a toolset
@@ -1179,6 +1340,11 @@ export type ExecuteToolsetRequest = {
1179
1340
  */
1180
1341
  params: unknown;
1181
1342
  };
1343
+ export type FetchMcpToolsRequest = {
1344
+ mcp_server_id: string;
1345
+ auth?: null | McpAuth;
1346
+ auth_uuid?: string | null;
1347
+ };
1182
1348
  /**
1183
1349
  * Request to fetch available models from provider
1184
1350
  */
@@ -1215,6 +1381,7 @@ export type FileObject = {
1215
1381
  filename?: string | null;
1216
1382
  };
1217
1383
  export type FinishReason = 'stop' | 'length' | 'tool_calls' | 'content_filter' | 'function_call';
1384
+ export type FlowType = 'redirect' | 'popup';
1218
1385
  /**
1219
1386
  * The name and arguments of a function that should be called, as generated by the model.
1220
1387
  */
@@ -1305,6 +1472,13 @@ export type InputAudio = {
1305
1472
  format: InputAudioFormat;
1306
1473
  };
1307
1474
  export type InputAudioFormat = 'wav' | 'mp3';
1475
+ export type JsonVec = Array<string>;
1476
+ export type ListMcpServersResponse = {
1477
+ mcp_servers: Array<McpServerResponse>;
1478
+ };
1479
+ export type ListMcpsResponse = {
1480
+ mcps: Array<McpResponse>;
1481
+ };
1308
1482
  export type ListModelResponse = {
1309
1483
  object: string;
1310
1484
  data: Array<Model>;
@@ -1313,13 +1487,14 @@ export type ListModelResponse = {
1313
1487
  * List of toolset types
1314
1488
  */
1315
1489
  export type ListToolsetTypesResponse = {
1316
- types: Array<ToolsetTypeResponse>;
1490
+ types: Array<ToolsetDefinition>;
1317
1491
  };
1318
1492
  /**
1319
1493
  * List of toolsets
1320
1494
  */
1321
1495
  export type ListToolsetsResponse = {
1322
1496
  toolsets: Array<ToolsetResponse>;
1497
+ toolset_types: Array<AppToolsetConfig>;
1323
1498
  };
1324
1499
  /**
1325
1500
  * List users query parameters
@@ -1336,113 +1511,378 @@ export type LocalModelResponse = {
1336
1511
  model_params: {};
1337
1512
  metadata?: null | ModelMetadata;
1338
1513
  };
1339
- export type Message = {
1340
- role: string;
1341
- content: string;
1342
- images?: Array<string> | null;
1343
- };
1344
- /**
1345
- * Set of 16 key-value pairs that can be attached to an object.
1346
- * This can be useful for storing additional information about the
1347
- * object in a structured format, and querying for objects via API
1348
- * or the dashboard. Keys are strings with a maximum length of 64
1349
- * characters. Values are strings with a maximum length of 512
1350
- * characters.
1351
- */
1352
- export type Metadata = unknown;
1353
1514
  /**
1354
- * Describes an OpenAI model offering that can be used with the API.
1515
+ * User-owned MCP server instance with tool caching and filtering.
1355
1516
  */
1356
- export type Model = {
1517
+ export type Mcp = {
1357
1518
  /**
1358
- * The model identifier, which can be referenced in the API endpoints.
1519
+ * Unique instance identifier (UUID)
1359
1520
  */
1360
1521
  id: string;
1361
1522
  /**
1362
- * The object type, which is always "model".
1523
+ * Server info resolved via JOIN
1363
1524
  */
1364
- object: string;
1525
+ mcp_server: McpServerInfo;
1365
1526
  /**
1366
- * The Unix timestamp (in seconds) when the model was created.
1527
+ * User-defined slug for this instance
1367
1528
  */
1368
- created: number;
1529
+ slug: string;
1369
1530
  /**
1370
- * The organization that owns the model.
1531
+ * Human-readable name
1371
1532
  */
1372
- owned_by: string;
1533
+ name: string;
1534
+ /**
1535
+ * Optional description for this instance
1536
+ */
1537
+ description?: string | null;
1538
+ /**
1539
+ * Whether this instance is enabled
1540
+ */
1541
+ enabled: boolean;
1542
+ /**
1543
+ * Cached tool schemas from the MCP server (JSON array)
1544
+ */
1545
+ tools_cache?: Array<McpTool> | null;
1546
+ /**
1547
+ * Whitelisted tool names (empty = block all)
1548
+ */
1549
+ tools_filter?: Array<string> | null;
1550
+ auth_type: McpAuthType;
1551
+ /**
1552
+ * Reference to the auth config (mcp_auth_headers.id or mcp_oauth_configs.id)
1553
+ */
1554
+ auth_uuid?: string | null;
1555
+ /**
1556
+ * When this instance was created
1557
+ */
1558
+ created_at: string;
1559
+ /**
1560
+ * When this instance was last updated
1561
+ */
1562
+ updated_at: string;
1373
1563
  };
1374
- export type ModelAlias = {
1375
- alias: string;
1376
- repo: string;
1377
- filename: string;
1378
- snapshot: string;
1564
+ export type McpApproval = {
1565
+ url: string;
1566
+ status: ApprovalStatus;
1567
+ instance?: null | McpInstance;
1568
+ };
1569
+ export type McpAuth = {
1570
+ type: 'public';
1571
+ } | {
1572
+ header_key: string;
1573
+ header_value: string;
1574
+ type: 'header';
1379
1575
  };
1380
1576
  /**
1381
- * Response for auto-discovered model aliases
1577
+ * Discriminated union response for any type of MCP auth config.
1578
+ * The JSON `"type"` field determines the variant: `"header"` or `"oauth"`.
1382
1579
  */
1383
- export type ModelAliasResponse = {
1384
- source: string;
1385
- alias: string;
1386
- repo: string;
1387
- filename: string;
1388
- snapshot: string;
1389
- metadata?: null | ModelMetadata;
1580
+ export type McpAuthConfigResponse = {
1581
+ id: string;
1582
+ name: string;
1583
+ mcp_server_id: string;
1584
+ header_key: string;
1585
+ has_header_value: boolean;
1586
+ created_by: string;
1587
+ created_at: string;
1588
+ updated_at: string;
1589
+ type: 'header';
1590
+ } | {
1591
+ id: string;
1592
+ name: string;
1593
+ mcp_server_id: string;
1594
+ registration_type: RegistrationType;
1595
+ client_id: string;
1596
+ authorization_endpoint: string;
1597
+ token_endpoint: string;
1598
+ registration_endpoint?: string | null;
1599
+ scopes?: string | null;
1600
+ client_id_issued_at?: number | null;
1601
+ token_endpoint_auth_method?: string | null;
1602
+ has_client_secret: boolean;
1603
+ has_registration_access_token: boolean;
1604
+ created_by: string;
1605
+ created_at: string;
1606
+ updated_at: string;
1607
+ type: 'oauth';
1390
1608
  };
1391
- export type ModelArchitecture = {
1392
- family?: string | null;
1393
- parameter_count?: number | null;
1394
- quantization?: string | null;
1395
- format: string;
1609
+ /**
1610
+ * List wrapper for unified auth config responses.
1611
+ */
1612
+ export type McpAuthConfigsListResponse = {
1613
+ auth_configs: Array<McpAuthConfigResponse>;
1396
1614
  };
1397
- export type ModelCapabilities = {
1398
- vision?: boolean | null;
1399
- audio?: boolean | null;
1400
- thinking?: boolean | null;
1401
- tools: ToolCapabilities;
1615
+ export type McpAuthType = 'public' | 'header' | 'oauth';
1616
+ export type McpExecuteRequest = {
1617
+ params: unknown;
1402
1618
  };
1403
- export type ModelDetails = {
1404
- parent_model?: string | null;
1405
- format: string;
1406
- family: string;
1407
- families?: Array<string> | null;
1408
- parameter_size: string;
1409
- quantization_level: string;
1619
+ export type McpExecuteResponse = {
1620
+ result?: unknown;
1621
+ error?: string | null;
1410
1622
  };
1411
- /**
1412
- * Model metadata for API responses
1413
- */
1414
- export type ModelMetadata = {
1415
- capabilities: ModelCapabilities;
1416
- context: ContextLimits;
1417
- architecture: ModelArchitecture;
1418
- chat_template?: string | null;
1623
+ export type McpInstance = {
1624
+ id: string;
1419
1625
  };
1420
- export type ModelsResponse = {
1421
- models: Array<OllamaModel>;
1626
+ export type McpResponse = {
1627
+ id: string;
1628
+ mcp_server: McpServerInfo;
1629
+ slug: string;
1630
+ name: string;
1631
+ description?: string | null;
1632
+ enabled: boolean;
1633
+ tools_cache?: Array<McpTool> | null;
1634
+ tools_filter?: Array<string> | null;
1635
+ auth_type: McpAuthType;
1636
+ auth_uuid?: string | null;
1637
+ created_at: string;
1638
+ updated_at: string;
1422
1639
  };
1423
1640
  /**
1424
- * Request to pull a model file from HuggingFace
1641
+ * Admin-managed MCP server registry entry.
1642
+ * Admins/managers register MCP server URLs that users can then create instances of.
1425
1643
  */
1426
- export type NewDownloadRequest = {
1644
+ export type McpServer = {
1427
1645
  /**
1428
- * HuggingFace repository name in format 'username/repository-name'
1646
+ * Unique identifier (UUID)
1429
1647
  */
1430
- repo: string;
1648
+ id: string;
1431
1649
  /**
1432
- * Model file name to download (typically .gguf format)
1650
+ * MCP server endpoint URL (trimmed, case-insensitive unique)
1433
1651
  */
1434
- filename: string;
1435
- };
1436
- export type OaiRequestParams = {
1437
- frequency_penalty?: number | null;
1438
- max_tokens?: number | null;
1439
- presence_penalty?: number | null;
1440
- seed?: number | null;
1441
- stop?: Array<string>;
1442
- temperature?: number | null;
1443
- top_p?: number | null;
1652
+ url: string;
1653
+ /**
1654
+ * Human-readable display name
1655
+ */
1656
+ name: string;
1657
+ /**
1658
+ * Optional description
1659
+ */
1660
+ description?: string | null;
1661
+ /**
1662
+ * Whether this MCP server is enabled
1663
+ */
1664
+ enabled: boolean;
1665
+ /**
1666
+ * User who created this entry
1667
+ */
1668
+ created_by: string;
1669
+ /**
1670
+ * User who last updated this entry
1671
+ */
1672
+ updated_by: string;
1673
+ /**
1674
+ * When this entry was created
1675
+ */
1676
+ created_at: string;
1677
+ /**
1678
+ * When this entry was last updated
1679
+ */
1680
+ updated_at: string;
1681
+ };
1682
+ /**
1683
+ * Minimal MCP server info embedded in MCP instance responses.
1684
+ */
1685
+ export type McpServerInfo = {
1686
+ id: string;
1687
+ url: string;
1688
+ name: string;
1689
+ enabled: boolean;
1690
+ };
1691
+ export type McpServerRequest = {
1692
+ url: string;
1693
+ };
1694
+ export type McpServerResponse = {
1695
+ id: string;
1696
+ url: string;
1697
+ name: string;
1698
+ description?: string | null;
1699
+ enabled: boolean;
1700
+ created_by: string;
1701
+ updated_by: string;
1702
+ enabled_mcp_count: number;
1703
+ disabled_mcp_count: number;
1704
+ created_at: string;
1705
+ updated_at: string;
1706
+ auth_config?: null | McpAuthConfigResponse;
1707
+ };
1708
+ export type McpServerReviewInfo = {
1709
+ /**
1710
+ * Requested MCP server URL
1711
+ */
1712
+ url: string;
1713
+ /**
1714
+ * User's MCP instances connected to this server URL
1715
+ */
1716
+ instances: Array<Mcp>;
1717
+ };
1718
+ /**
1719
+ * Tool schema cached from an MCP server's tools/list response.
1720
+ */
1721
+ export type McpTool = {
1722
+ /**
1723
+ * Tool name as declared by the MCP server
1724
+ */
1725
+ name: string;
1726
+ /**
1727
+ * Human-readable description of the tool
1728
+ */
1729
+ description?: string | null;
1730
+ /**
1731
+ * JSON Schema for tool input parameters
1732
+ */
1733
+ input_schema?: unknown;
1734
+ };
1735
+ export type McpToolsResponse = {
1736
+ tools: Array<McpTool>;
1737
+ };
1738
+ export type Message = {
1739
+ role: string;
1740
+ content: string;
1741
+ images?: Array<string> | null;
1742
+ };
1743
+ /**
1744
+ * Set of 16 key-value pairs that can be attached to an object.
1745
+ * This can be useful for storing additional information about the
1746
+ * object in a structured format, and querying for objects via API
1747
+ * or the dashboard. Keys are strings with a maximum length of 64
1748
+ * characters. Values are strings with a maximum length of 512
1749
+ * characters.
1750
+ */
1751
+ export type Metadata = unknown;
1752
+ /**
1753
+ * Describes an OpenAI model offering that can be used with the API.
1754
+ */
1755
+ export type Model = {
1756
+ /**
1757
+ * The model identifier, which can be referenced in the API endpoints.
1758
+ */
1759
+ id: string;
1760
+ /**
1761
+ * The object type, which is always "model".
1762
+ */
1763
+ object: string;
1764
+ /**
1765
+ * The Unix timestamp (in seconds) when the model was created.
1766
+ */
1767
+ created: number;
1768
+ /**
1769
+ * The organization that owns the model.
1770
+ */
1771
+ owned_by: string;
1772
+ };
1773
+ export type ModelAlias = {
1774
+ alias: string;
1775
+ repo: string;
1776
+ filename: string;
1777
+ snapshot: string;
1778
+ };
1779
+ /**
1780
+ * Response for auto-discovered model aliases
1781
+ */
1782
+ export type ModelAliasResponse = {
1783
+ source: string;
1784
+ alias: string;
1785
+ repo: string;
1786
+ filename: string;
1787
+ snapshot: string;
1788
+ metadata?: null | ModelMetadata;
1789
+ };
1790
+ export type ModelArchitecture = {
1791
+ family?: string | null;
1792
+ parameter_count?: number | null;
1793
+ quantization?: string | null;
1794
+ format: string;
1795
+ };
1796
+ export type ModelCapabilities = {
1797
+ vision?: boolean | null;
1798
+ audio?: boolean | null;
1799
+ thinking?: boolean | null;
1800
+ tools: ToolCapabilities;
1801
+ };
1802
+ export type ModelDetails = {
1803
+ parent_model?: string | null;
1804
+ format: string;
1805
+ family: string;
1806
+ families?: Array<string> | null;
1807
+ parameter_size: string;
1808
+ quantization_level: string;
1809
+ };
1810
+ /**
1811
+ * Model metadata for API responses
1812
+ */
1813
+ export type ModelMetadata = {
1814
+ capabilities: ModelCapabilities;
1815
+ context: ContextLimits;
1816
+ architecture: ModelArchitecture;
1817
+ chat_template?: string | null;
1818
+ };
1819
+ export type ModelsResponse = {
1820
+ models: Array<OllamaModel>;
1821
+ };
1822
+ /**
1823
+ * Request to pull a model file from HuggingFace
1824
+ */
1825
+ export type NewDownloadRequest = {
1826
+ /**
1827
+ * HuggingFace repository name in format 'username/repository-name'
1828
+ */
1829
+ repo: string;
1830
+ /**
1831
+ * Model file name to download (typically .gguf format)
1832
+ */
1833
+ filename: string;
1834
+ };
1835
+ export type OaiRequestParams = {
1836
+ frequency_penalty?: number | null;
1837
+ max_tokens?: number | null;
1838
+ presence_penalty?: number | null;
1839
+ seed?: number | null;
1840
+ stop?: Array<string>;
1841
+ temperature?: number | null;
1842
+ top_p?: number | null;
1444
1843
  user?: string | null;
1445
1844
  };
1845
+ export type OAuthDiscoverAsRequest = {
1846
+ url: string;
1847
+ };
1848
+ export type OAuthDiscoverAsResponse = {
1849
+ authorization_endpoint: string;
1850
+ token_endpoint: string;
1851
+ scopes_supported?: Array<string> | null;
1852
+ };
1853
+ export type OAuthDiscoverMcpRequest = {
1854
+ mcp_server_url: string;
1855
+ };
1856
+ export type OAuthDiscoverMcpResponse = {
1857
+ authorization_endpoint?: string | null;
1858
+ token_endpoint?: string | null;
1859
+ registration_endpoint?: string | null;
1860
+ scopes_supported?: Array<string> | null;
1861
+ resource?: string | null;
1862
+ authorization_server_url?: string | null;
1863
+ };
1864
+ export type OAuthLoginRequest = {
1865
+ redirect_uri: string;
1866
+ };
1867
+ export type OAuthLoginResponse = {
1868
+ authorization_url: string;
1869
+ };
1870
+ export type OAuthTokenExchangeRequest = {
1871
+ code: string;
1872
+ redirect_uri: string;
1873
+ state: string;
1874
+ };
1875
+ export type OAuthTokenResponse = {
1876
+ id: string;
1877
+ mcp_oauth_config_id: string;
1878
+ scopes_granted?: string | null;
1879
+ expires_at?: number | null;
1880
+ has_access_token: boolean;
1881
+ has_refresh_token: boolean;
1882
+ created_by: string;
1883
+ created_at: string;
1884
+ updated_at: string;
1885
+ };
1446
1886
  export type OllamaError = {
1447
1887
  error: string;
1448
1888
  };
@@ -1662,6 +2102,14 @@ export type RefreshResponse = {
1662
2102
  * Source type discriminator for refresh requests
1663
2103
  */
1664
2104
  export type RefreshSource = 'all' | 'model';
2105
+ /**
2106
+ * OAuth 2.1 registration type: pre-registered client or dynamic client registration (DCR).
2107
+ */
2108
+ export type RegistrationType = 'pre_registered' | 'dynamic_registration';
2109
+ export type RequestedResources = {
2110
+ toolset_types?: Array<ToolsetTypeRequest>;
2111
+ mcp_servers?: Array<McpServerRequest>;
2112
+ };
1665
2113
  export type ResourceRole = 'resource_user' | 'resource_power_user' | 'resource_manager' | 'resource_admin';
1666
2114
  export type ResponseFormat = {
1667
2115
  type: 'text';
@@ -1724,7 +2172,7 @@ export type SettingMetadata = {
1724
2172
  options: Array<string>;
1725
2173
  type: 'option';
1726
2174
  };
1727
- export type SettingSource = 'system' | 'command_line' | 'environment' | 'settings_file' | 'default';
2175
+ export type SettingSource = 'system' | 'command_line' | 'environment' | 'database' | 'settings_file' | 'default';
1728
2176
  /**
1729
2177
  * Request to setup the application in authenticated mode
1730
2178
  */
@@ -1811,7 +2259,7 @@ export type TestPromptResponse = {
1811
2259
  export type TokenInfo = {
1812
2260
  role: TokenScope;
1813
2261
  };
1814
- export type TokenScope = 'scope_token_user' | 'scope_token_power_user' | 'scope_token_manager' | 'scope_token_admin';
2262
+ export type TokenScope = 'scope_token_user' | 'scope_token_power_user';
1815
2263
  export type TokenStatus = 'active' | 'inactive';
1816
2264
  export type ToolCapabilities = {
1817
2265
  function_calling?: boolean | null;
@@ -1821,7 +2269,7 @@ export type ToolChoiceAllowedMode = 'auto' | 'required';
1821
2269
  export type ToolChoiceOptions = 'none' | 'auto' | 'required';
1822
2270
  /**
1823
2271
  * Tool definition in OpenAI format for LLM function calling.
1824
- * Tool name follows Claude MCP convention: toolset__{toolset_id}__{tool_name}
2272
+ * Tool name follows Claude MCP convention: toolset__{toolset_name}__{tool_name}
1825
2273
  */
1826
2274
  export type ToolDefinition = {
1827
2275
  /**
@@ -1833,6 +2281,24 @@ export type ToolDefinition = {
1833
2281
  */
1834
2282
  function: FunctionDefinition;
1835
2283
  };
2284
+ export type ToolTypeReviewInfo = {
2285
+ /**
2286
+ * Tool type identifier
2287
+ */
2288
+ toolset_type: string;
2289
+ /**
2290
+ * Tool type display name
2291
+ */
2292
+ name: string;
2293
+ /**
2294
+ * Tool type description
2295
+ */
2296
+ description: string;
2297
+ /**
2298
+ * User's configured instances of this tool type
2299
+ */
2300
+ instances: Array<Toolset>;
2301
+ };
1836
2302
  /**
1837
2303
  * User-owned toolset instance with UUID identification
1838
2304
  */
@@ -1842,11 +2308,11 @@ export type Toolset = {
1842
2308
  */
1843
2309
  id: string;
1844
2310
  /**
1845
- * User-defined name for this instance
2311
+ * User-defined slug for this instance
1846
2312
  */
1847
- name: string;
2313
+ slug: string;
1848
2314
  /**
1849
- * Toolset type identifier (e.g., "builtin-exa-web-search")
2315
+ * Toolset type identifier (e.g., "builtin-exa-search")
1850
2316
  */
1851
2317
  toolset_type: string;
1852
2318
  /**
@@ -1870,6 +2336,33 @@ export type Toolset = {
1870
2336
  */
1871
2337
  updated_at: string;
1872
2338
  };
2339
+ export type ToolsetApproval = {
2340
+ toolset_type: string;
2341
+ status: ApprovalStatus;
2342
+ instance?: null | ToolsetInstance;
2343
+ };
2344
+ /**
2345
+ * A toolset is a connector that provides one or more tools.
2346
+ * Example: Exa Web Search toolset provides search, find_similar, get_contents, answer tools.
2347
+ */
2348
+ export type ToolsetDefinition = {
2349
+ /**
2350
+ * Toolset type identifier (e.g., "builtin-exa-search")
2351
+ */
2352
+ toolset_type: string;
2353
+ /**
2354
+ * Human-readable name (e.g., "Exa Web Search")
2355
+ */
2356
+ name: string;
2357
+ /**
2358
+ * Description of the toolset
2359
+ */
2360
+ description: string;
2361
+ /**
2362
+ * Tools provided by this toolset (in OpenAI format)
2363
+ */
2364
+ tools: Array<ToolDefinition>;
2365
+ };
1873
2366
  /**
1874
2367
  * Response from toolset tool execution (to send back to LLM)
1875
2368
  */
@@ -1883,6 +2376,9 @@ export type ToolsetExecutionResponse = {
1883
2376
  */
1884
2377
  error?: string | null;
1885
2378
  };
2379
+ export type ToolsetInstance = {
2380
+ id: string;
2381
+ };
1886
2382
  /**
1887
2383
  * Toolset response
1888
2384
  */
@@ -1892,11 +2388,11 @@ export type ToolsetResponse = {
1892
2388
  */
1893
2389
  id: string;
1894
2390
  /**
1895
- * User-defined name for this toolset
2391
+ * User-defined slug for this toolset
1896
2392
  */
1897
- name: string;
2393
+ slug: string;
1898
2394
  /**
1899
- * Toolset type identifier (e.g., "builtin-exa-web-search")
2395
+ * Toolset type identifier (e.g., "builtin-exa-search")
1900
2396
  */
1901
2397
  toolset_type: string;
1902
2398
  /**
@@ -1911,10 +2407,6 @@ export type ToolsetResponse = {
1911
2407
  * Whether this toolset has an API key configured
1912
2408
  */
1913
2409
  has_api_key: boolean;
1914
- /**
1915
- * Whether the toolset type is enabled at app level
1916
- */
1917
- app_enabled: boolean;
1918
2410
  /**
1919
2411
  * Tools provided by this toolset type
1920
2412
  */
@@ -1928,55 +2420,8 @@ export type ToolsetResponse = {
1928
2420
  */
1929
2421
  updated_at: string;
1930
2422
  };
1931
- /**
1932
- * Toolset type response (for admin listing)
1933
- */
1934
- export type ToolsetTypeResponse = {
1935
- /**
1936
- * Unique toolset type identifier (e.g., "builtin-exa-web-search")
1937
- */
1938
- toolset_id: string;
1939
- /**
1940
- * Human-readable name (e.g., "Exa Web Search")
1941
- */
1942
- name: string;
1943
- /**
1944
- * Description of the toolset
1945
- */
1946
- description: string;
1947
- /**
1948
- * Whether the toolset is enabled at app level (admin-controlled)
1949
- */
1950
- app_enabled: boolean;
1951
- /**
1952
- * Tools provided by this toolset
1953
- */
1954
- tools: Array<ToolDefinition>;
1955
- };
1956
- /**
1957
- * Toolset with app-level configuration status (API response model)
1958
- */
1959
- export type ToolsetWithTools = {
1960
- /**
1961
- * Unique toolset identifier (e.g., "builtin-exa-web-search")
1962
- */
1963
- toolset_id: string;
1964
- /**
1965
- * Human-readable name (e.g., "Exa Web Search")
1966
- */
1967
- name: string;
1968
- /**
1969
- * Description of the toolset
1970
- */
1971
- description: string;
1972
- /**
1973
- * Whether the toolset is enabled at app level (admin-controlled)
1974
- */
1975
- app_enabled: boolean;
1976
- /**
1977
- * Tools provided by this toolset
1978
- */
1979
- tools: Array<ToolDefinition>;
2423
+ export type ToolsetTypeRequest = {
2424
+ toolset_type: string;
1980
2425
  };
1981
2426
  export type TopLogprobs = {
1982
2427
  /**
@@ -2041,11 +2486,27 @@ export type UpdateApiTokenRequest = {
2041
2486
  */
2042
2487
  status: TokenStatus;
2043
2488
  };
2044
- /**
2045
- * Request to update a setting value
2046
- */
2047
- export type UpdateSettingRequest = {
2048
- /**
2489
+ export type UpdateMcpRequest = {
2490
+ name: string;
2491
+ slug: string;
2492
+ description?: string | null;
2493
+ enabled: boolean;
2494
+ tools_filter?: Array<string> | null;
2495
+ tools_cache?: Array<McpTool> | null;
2496
+ auth_type?: null | McpAuthType;
2497
+ auth_uuid?: string | null;
2498
+ };
2499
+ export type UpdateMcpServerRequest = {
2500
+ url: string;
2501
+ name: string;
2502
+ description?: string | null;
2503
+ enabled: boolean;
2504
+ };
2505
+ /**
2506
+ * Request to update a setting value
2507
+ */
2508
+ export type UpdateSettingRequest = {
2509
+ /**
2049
2510
  * New value for the setting (type depends on setting metadata)
2050
2511
  */
2051
2512
  value: unknown;
@@ -2055,9 +2516,9 @@ export type UpdateSettingRequest = {
2055
2516
  */
2056
2517
  export type UpdateToolsetRequest = {
2057
2518
  /**
2058
- * User-defined name for this toolset
2519
+ * User-defined slug for this toolset
2059
2520
  */
2060
- name: string;
2521
+ slug: string;
2061
2522
  /**
2062
2523
  * Optional description for this toolset
2063
2524
  */
@@ -2090,30 +2551,12 @@ export type UrlCitation = {
2090
2551
  url: string;
2091
2552
  };
2092
2553
  export type UserAccessRequest = {
2093
- /**
2094
- * Unique identifier for the request
2095
- */
2096
- id: number;
2097
- /**
2098
- * Username of the requesting user
2099
- */
2554
+ id: string;
2100
2555
  username: string;
2101
- /**
2102
- * User ID (UUID) of the requesting user
2103
- */
2104
2556
  user_id: string;
2105
2557
  reviewer?: string | null;
2106
- /**
2107
- * Current status of the request
2108
- */
2109
2558
  status: UserAccessRequestStatus;
2110
- /**
2111
- * Creation timestamp
2112
- */
2113
2559
  created_at: string;
2114
- /**
2115
- * Last update timestamp
2116
- */
2117
2560
  updated_at: string;
2118
2561
  };
2119
2562
  export type UserAccessRequestStatus = 'pending' | 'approved' | 'rejected';
@@ -2139,14 +2582,18 @@ export type UserAccessStatusResponse = {
2139
2582
  updated_at: string;
2140
2583
  };
2141
2584
  export type UserAlias = {
2585
+ id: string;
2142
2586
  alias: string;
2143
2587
  repo: string;
2144
2588
  filename: string;
2145
2589
  snapshot: string;
2146
2590
  request_params?: OaiRequestParams;
2147
- context_params?: Array<string>;
2591
+ context_params?: JsonVec;
2592
+ created_at: string;
2593
+ updated_at: string;
2148
2594
  };
2149
2595
  export type UserAliasResponse = {
2596
+ id: string;
2150
2597
  alias: string;
2151
2598
  repo: string;
2152
2599
  filename: string;
@@ -2155,6 +2602,8 @@ export type UserAliasResponse = {
2155
2602
  model_params: {};
2156
2603
  request_params: OaiRequestParams;
2157
2604
  context_params: Array<string>;
2605
+ created_at: string;
2606
+ updated_at: string;
2158
2607
  metadata?: null | ModelMetadata;
2159
2608
  };
2160
2609
  export type UserInfo = {
@@ -2184,7 +2633,7 @@ export type UserResponse = {
2184
2633
  }) | (TokenInfo & {
2185
2634
  auth_status: 'api_token';
2186
2635
  });
2187
- export type UserScope = 'scope_user_user' | 'scope_user_power_user' | 'scope_user_manager' | 'scope_user_admin';
2636
+ export type UserScope = 'scope_user_user' | 'scope_user_power_user';
2188
2637
  /**
2189
2638
  * Constrains the verbosity of the model's response. Lower values will result in more concise responses, while higher values will result in more verbose responses. Currently supported values are `low`, `medium`, and `high`.
2190
2639
  */
@@ -2442,7 +2891,7 @@ export type ApproveAccessRequestData = {
2442
2891
  /**
2443
2892
  * Access request ID
2444
2893
  */
2445
- id: number;
2894
+ id: string;
2446
2895
  };
2447
2896
  query?: never;
2448
2897
  url: '/bodhi/v1/access-requests/{id}/approve';
@@ -2476,13 +2925,106 @@ export type ApproveAccessRequestResponses = {
2476
2925
  */
2477
2926
  200: unknown;
2478
2927
  };
2928
+ export type ApproveAppsAccessRequestData = {
2929
+ /**
2930
+ * Approval details with tool selections
2931
+ */
2932
+ body: ApproveAccessRequestBody;
2933
+ path: {
2934
+ /**
2935
+ * Access request ID
2936
+ */
2937
+ id: string;
2938
+ };
2939
+ query?: never;
2940
+ url: '/bodhi/v1/access-requests/{id}/approve';
2941
+ };
2942
+ export type ApproveAppsAccessRequestErrors = {
2943
+ /**
2944
+ * Invalid request parameters
2945
+ */
2946
+ 400: OpenAiApiError;
2947
+ /**
2948
+ * Not authenticated
2949
+ */
2950
+ 401: OpenAiApiError;
2951
+ /**
2952
+ * Insufficient permissions
2953
+ */
2954
+ 403: OpenAiApiError;
2955
+ /**
2956
+ * Not found
2957
+ */
2958
+ 404: OpenAiApiError;
2959
+ /**
2960
+ * Already processed
2961
+ */
2962
+ 409: OpenAiApiError;
2963
+ /**
2964
+ * Internal server error
2965
+ */
2966
+ 500: OpenAiApiError;
2967
+ };
2968
+ export type ApproveAppsAccessRequestError = ApproveAppsAccessRequestErrors[keyof ApproveAppsAccessRequestErrors];
2969
+ export type ApproveAppsAccessRequestResponses = {
2970
+ /**
2971
+ * Request approved
2972
+ */
2973
+ 200: AccessRequestActionResponse;
2974
+ };
2975
+ export type ApproveAppsAccessRequestResponse = ApproveAppsAccessRequestResponses[keyof ApproveAppsAccessRequestResponses];
2976
+ export type DenyAccessRequestData = {
2977
+ body?: never;
2978
+ path: {
2979
+ /**
2980
+ * Access request ID
2981
+ */
2982
+ id: string;
2983
+ };
2984
+ query?: never;
2985
+ url: '/bodhi/v1/access-requests/{id}/deny';
2986
+ };
2987
+ export type DenyAccessRequestErrors = {
2988
+ /**
2989
+ * Invalid request parameters
2990
+ */
2991
+ 400: OpenAiApiError;
2992
+ /**
2993
+ * Not authenticated
2994
+ */
2995
+ 401: OpenAiApiError;
2996
+ /**
2997
+ * Insufficient permissions
2998
+ */
2999
+ 403: OpenAiApiError;
3000
+ /**
3001
+ * Not found
3002
+ */
3003
+ 404: OpenAiApiError;
3004
+ /**
3005
+ * Already processed
3006
+ */
3007
+ 409: OpenAiApiError;
3008
+ /**
3009
+ * Internal server error
3010
+ */
3011
+ 500: OpenAiApiError;
3012
+ };
3013
+ export type DenyAccessRequestError = DenyAccessRequestErrors[keyof DenyAccessRequestErrors];
3014
+ export type DenyAccessRequestResponses = {
3015
+ /**
3016
+ * Request denied
3017
+ */
3018
+ 200: AccessRequestActionResponse;
3019
+ };
3020
+ export type DenyAccessRequestResponse = DenyAccessRequestResponses[keyof DenyAccessRequestResponses];
2479
3021
  export type RejectAccessRequestData = {
2480
3022
  body?: never;
2481
3023
  path: {
2482
3024
  /**
2483
3025
  * Access request ID
2484
3026
  */
2485
- id: number;
3027
+ id: string;
2486
3028
  };
2487
3029
  query?: never;
2488
3030
  url: '/bodhi/v1/access-requests/{id}/reject';
@@ -2516,6 +3058,51 @@ export type RejectAccessRequestResponses = {
2516
3058
  */
2517
3059
  200: unknown;
2518
3060
  };
3061
+ export type GetAccessRequestReviewData = {
3062
+ body?: never;
3063
+ path: {
3064
+ /**
3065
+ * Access request ID
3066
+ */
3067
+ id: string;
3068
+ };
3069
+ query?: never;
3070
+ url: '/bodhi/v1/access-requests/{id}/review';
3071
+ };
3072
+ export type GetAccessRequestReviewErrors = {
3073
+ /**
3074
+ * Invalid request parameters
3075
+ */
3076
+ 400: OpenAiApiError;
3077
+ /**
3078
+ * Not authenticated
3079
+ */
3080
+ 401: OpenAiApiError;
3081
+ /**
3082
+ * Insufficient permissions
3083
+ */
3084
+ 403: OpenAiApiError;
3085
+ /**
3086
+ * Not found
3087
+ */
3088
+ 404: OpenAiApiError;
3089
+ /**
3090
+ * Request expired
3091
+ */
3092
+ 410: OpenAiApiError;
3093
+ /**
3094
+ * Internal server error
3095
+ */
3096
+ 500: OpenAiApiError;
3097
+ };
3098
+ export type GetAccessRequestReviewError = GetAccessRequestReviewErrors[keyof GetAccessRequestReviewErrors];
3099
+ export type GetAccessRequestReviewResponses = {
3100
+ /**
3101
+ * Review data retrieved
3102
+ */
3103
+ 200: AccessRequestReviewResponse;
3104
+ };
3105
+ export type GetAccessRequestReviewResponse = GetAccessRequestReviewResponses[keyof GetAccessRequestReviewResponses];
2519
3106
  export type ListApiModelsData = {
2520
3107
  body?: never;
2521
3108
  path?: never;
@@ -2706,9 +3293,929 @@ export type DeleteApiModelData = {
2706
3293
  id: string;
2707
3294
  };
2708
3295
  query?: never;
2709
- url: '/bodhi/v1/api-models/{id}';
3296
+ url: '/bodhi/v1/api-models/{id}';
3297
+ };
3298
+ export type DeleteApiModelErrors = {
3299
+ /**
3300
+ * Invalid request parameters
3301
+ */
3302
+ 400: OpenAiApiError;
3303
+ /**
3304
+ * Not authenticated
3305
+ */
3306
+ 401: OpenAiApiError;
3307
+ /**
3308
+ * Insufficient permissions
3309
+ */
3310
+ 403: OpenAiApiError;
3311
+ /**
3312
+ * API model not found
3313
+ */
3314
+ 404: OpenAiApiError;
3315
+ /**
3316
+ * Internal server error
3317
+ */
3318
+ 500: OpenAiApiError;
3319
+ };
3320
+ export type DeleteApiModelError = DeleteApiModelErrors[keyof DeleteApiModelErrors];
3321
+ export type DeleteApiModelResponses = {
3322
+ /**
3323
+ * API model deleted
3324
+ */
3325
+ 204: void;
3326
+ };
3327
+ export type DeleteApiModelResponse = DeleteApiModelResponses[keyof DeleteApiModelResponses];
3328
+ export type GetApiModelData = {
3329
+ body?: never;
3330
+ path: {
3331
+ /**
3332
+ * Unique identifier for the API model alias
3333
+ */
3334
+ id: string;
3335
+ };
3336
+ query?: never;
3337
+ url: '/bodhi/v1/api-models/{id}';
3338
+ };
3339
+ export type GetApiModelErrors = {
3340
+ /**
3341
+ * Invalid request parameters
3342
+ */
3343
+ 400: OpenAiApiError;
3344
+ /**
3345
+ * Not authenticated
3346
+ */
3347
+ 401: OpenAiApiError;
3348
+ /**
3349
+ * Insufficient permissions
3350
+ */
3351
+ 403: OpenAiApiError;
3352
+ /**
3353
+ * API model with specified ID not found
3354
+ */
3355
+ 404: OpenAiApiError;
3356
+ /**
3357
+ * Internal server error
3358
+ */
3359
+ 500: OpenAiApiError;
3360
+ };
3361
+ export type GetApiModelError = GetApiModelErrors[keyof GetApiModelErrors];
3362
+ export type GetApiModelResponses = {
3363
+ /**
3364
+ * API model configuration retrieved successfully
3365
+ */
3366
+ 200: ApiModelResponse;
3367
+ };
3368
+ export type GetApiModelResponse = GetApiModelResponses[keyof GetApiModelResponses];
3369
+ export type UpdateApiModelData = {
3370
+ body: UpdateApiModelRequest;
3371
+ path: {
3372
+ /**
3373
+ * API model ID
3374
+ */
3375
+ id: string;
3376
+ };
3377
+ query?: never;
3378
+ url: '/bodhi/v1/api-models/{id}';
3379
+ };
3380
+ export type UpdateApiModelErrors = {
3381
+ /**
3382
+ * Invalid request parameters
3383
+ */
3384
+ 400: OpenAiApiError;
3385
+ /**
3386
+ * Not authenticated
3387
+ */
3388
+ 401: OpenAiApiError;
3389
+ /**
3390
+ * Insufficient permissions
3391
+ */
3392
+ 403: OpenAiApiError;
3393
+ /**
3394
+ * API model not found
3395
+ */
3396
+ 404: OpenAiApiError;
3397
+ /**
3398
+ * Internal server error
3399
+ */
3400
+ 500: OpenAiApiError;
3401
+ };
3402
+ export type UpdateApiModelError = UpdateApiModelErrors[keyof UpdateApiModelErrors];
3403
+ export type UpdateApiModelResponses = {
3404
+ /**
3405
+ * API model updated
3406
+ */
3407
+ 200: ApiModelResponse;
3408
+ };
3409
+ export type UpdateApiModelResponse = UpdateApiModelResponses[keyof UpdateApiModelResponses];
3410
+ export type SyncModelsData = {
3411
+ body?: never;
3412
+ path: {
3413
+ /**
3414
+ * Unique identifier for the API model alias
3415
+ */
3416
+ id: string;
3417
+ };
3418
+ query?: never;
3419
+ url: '/bodhi/v1/api-models/{id}/sync-models';
3420
+ };
3421
+ export type SyncModelsErrors = {
3422
+ /**
3423
+ * Invalid request parameters
3424
+ */
3425
+ 400: OpenAiApiError;
3426
+ /**
3427
+ * Not authenticated
3428
+ */
3429
+ 401: OpenAiApiError;
3430
+ /**
3431
+ * Insufficient permissions
3432
+ */
3433
+ 403: OpenAiApiError;
3434
+ /**
3435
+ * API model not found
3436
+ */
3437
+ 404: unknown;
3438
+ /**
3439
+ * Internal server error
3440
+ */
3441
+ 500: OpenAiApiError;
3442
+ };
3443
+ export type SyncModelsError = SyncModelsErrors[keyof SyncModelsErrors];
3444
+ export type SyncModelsResponses = {
3445
+ /**
3446
+ * Models synced to cache successfully
3447
+ */
3448
+ 200: ApiModelResponse;
3449
+ };
3450
+ export type SyncModelsResponse = SyncModelsResponses[keyof SyncModelsResponses];
3451
+ export type GetAccessRequestStatusData = {
3452
+ body?: never;
3453
+ path: {
3454
+ /**
3455
+ * Access request ID
3456
+ */
3457
+ id: string;
3458
+ };
3459
+ query: {
3460
+ /**
3461
+ * App client ID for verification
3462
+ */
3463
+ app_client_id: string;
3464
+ };
3465
+ url: '/bodhi/v1/apps/access-requests/{id}';
3466
+ };
3467
+ export type GetAccessRequestStatusErrors = {
3468
+ /**
3469
+ * Invalid request parameters
3470
+ */
3471
+ 400: OpenAiApiError;
3472
+ /**
3473
+ * Not authenticated
3474
+ */
3475
+ 401: OpenAiApiError;
3476
+ /**
3477
+ * Insufficient permissions
3478
+ */
3479
+ 403: OpenAiApiError;
3480
+ /**
3481
+ * Not found or app_client_id mismatch
3482
+ */
3483
+ 404: OpenAiApiError;
3484
+ /**
3485
+ * Internal server error
3486
+ */
3487
+ 500: OpenAiApiError;
3488
+ };
3489
+ export type GetAccessRequestStatusError = GetAccessRequestStatusErrors[keyof GetAccessRequestStatusErrors];
3490
+ export type GetAccessRequestStatusResponses = {
3491
+ /**
3492
+ * Status retrieved
3493
+ */
3494
+ 200: AccessRequestStatusResponse;
3495
+ };
3496
+ export type GetAccessRequestStatusResponse = GetAccessRequestStatusResponses[keyof GetAccessRequestStatusResponses];
3497
+ export type CreateAccessRequestData = {
3498
+ /**
3499
+ * Access request details
3500
+ */
3501
+ body: CreateAccessRequestBody;
3502
+ path?: never;
3503
+ query?: never;
3504
+ url: '/bodhi/v1/apps/request-access';
3505
+ };
3506
+ export type CreateAccessRequestErrors = {
3507
+ /**
3508
+ * Invalid request parameters
3509
+ */
3510
+ 400: OpenAiApiError;
3511
+ /**
3512
+ * Not authenticated
3513
+ */
3514
+ 401: OpenAiApiError;
3515
+ /**
3516
+ * Insufficient permissions
3517
+ */
3518
+ 403: OpenAiApiError;
3519
+ /**
3520
+ * App client not found
3521
+ */
3522
+ 404: OpenAiApiError;
3523
+ /**
3524
+ * Internal server error
3525
+ */
3526
+ 500: OpenAiApiError;
3527
+ };
3528
+ export type CreateAccessRequestError = CreateAccessRequestErrors[keyof CreateAccessRequestErrors];
3529
+ export type CreateAccessRequestResponses = {
3530
+ /**
3531
+ * Access request created
3532
+ */
3533
+ 201: CreateAccessRequestResponse;
3534
+ };
3535
+ export type CreateAccessRequestResponse2 = CreateAccessRequestResponses[keyof CreateAccessRequestResponses];
3536
+ export type CompleteOAuthFlowData = {
3537
+ /**
3538
+ * OAuth callback parameters from authorization server
3539
+ */
3540
+ body: AuthCallbackRequest;
3541
+ path?: never;
3542
+ query?: never;
3543
+ url: '/bodhi/v1/auth/callback';
3544
+ };
3545
+ export type CompleteOAuthFlowErrors = {
3546
+ /**
3547
+ * Invalid request parameters
3548
+ */
3549
+ 400: OpenAiApiError;
3550
+ /**
3551
+ * Not authenticated
3552
+ */
3553
+ 401: OpenAiApiError;
3554
+ /**
3555
+ * Insufficient permissions
3556
+ */
3557
+ 403: OpenAiApiError;
3558
+ /**
3559
+ * OAuth error, invalid request parameters, or state mismatch
3560
+ */
3561
+ 422: OpenAiApiError;
3562
+ /**
3563
+ * Internal server error
3564
+ */
3565
+ 500: OpenAiApiError;
3566
+ };
3567
+ export type CompleteOAuthFlowError = CompleteOAuthFlowErrors[keyof CompleteOAuthFlowErrors];
3568
+ export type CompleteOAuthFlowResponses = {
3569
+ /**
3570
+ * OAuth flow completed successfully, user authenticated
3571
+ */
3572
+ 200: RedirectResponse;
3573
+ };
3574
+ export type CompleteOAuthFlowResponse = CompleteOAuthFlowResponses[keyof CompleteOAuthFlowResponses];
3575
+ export type InitiateOAuthFlowData = {
3576
+ body: unknown;
3577
+ path?: never;
3578
+ query?: never;
3579
+ url: '/bodhi/v1/auth/initiate';
3580
+ };
3581
+ export type InitiateOAuthFlowErrors = {
3582
+ /**
3583
+ * Invalid request parameters
3584
+ */
3585
+ 400: OpenAiApiError;
3586
+ /**
3587
+ * Not authenticated
3588
+ */
3589
+ 401: OpenAiApiError;
3590
+ /**
3591
+ * Insufficient permissions
3592
+ */
3593
+ 403: OpenAiApiError;
3594
+ /**
3595
+ * Internal server error
3596
+ */
3597
+ 500: OpenAiApiError;
3598
+ };
3599
+ export type InitiateOAuthFlowError = InitiateOAuthFlowErrors[keyof InitiateOAuthFlowErrors];
3600
+ export type InitiateOAuthFlowResponses = {
3601
+ /**
3602
+ * User already authenticated, home page URL provided
3603
+ */
3604
+ 200: RedirectResponse;
3605
+ /**
3606
+ * User not authenticated, OAuth authorization URL provided
3607
+ */
3608
+ 201: RedirectResponse;
3609
+ };
3610
+ export type InitiateOAuthFlowResponse = InitiateOAuthFlowResponses[keyof InitiateOAuthFlowResponses];
3611
+ export type GetAppInfoData = {
3612
+ body?: never;
3613
+ path?: never;
3614
+ query?: never;
3615
+ url: '/bodhi/v1/info';
3616
+ };
3617
+ export type GetAppInfoErrors = {
3618
+ /**
3619
+ * Invalid request parameters
3620
+ */
3621
+ 400: OpenAiApiError;
3622
+ /**
3623
+ * Internal server error
3624
+ */
3625
+ 500: OpenAiApiError;
3626
+ };
3627
+ export type GetAppInfoError = GetAppInfoErrors[keyof GetAppInfoErrors];
3628
+ export type GetAppInfoResponses = {
3629
+ /**
3630
+ * Application information retrieved successfully
3631
+ */
3632
+ 200: AppInfo;
3633
+ };
3634
+ export type GetAppInfoResponse = GetAppInfoResponses[keyof GetAppInfoResponses];
3635
+ export type LogoutUserData = {
3636
+ body?: never;
3637
+ path?: never;
3638
+ query?: never;
3639
+ url: '/bodhi/v1/logout';
3640
+ };
3641
+ export type LogoutUserErrors = {
3642
+ /**
3643
+ * Invalid request parameters
3644
+ */
3645
+ 400: OpenAiApiError;
3646
+ /**
3647
+ * Not authenticated
3648
+ */
3649
+ 401: OpenAiApiError;
3650
+ /**
3651
+ * Insufficient permissions
3652
+ */
3653
+ 403: OpenAiApiError;
3654
+ /**
3655
+ * Internal server error
3656
+ */
3657
+ 500: OpenAiApiError;
3658
+ };
3659
+ export type LogoutUserError = LogoutUserErrors[keyof LogoutUserErrors];
3660
+ export type LogoutUserResponses = {
3661
+ /**
3662
+ * User logged out successfully
3663
+ */
3664
+ 200: RedirectResponse;
3665
+ };
3666
+ export type LogoutUserResponse = LogoutUserResponses[keyof LogoutUserResponses];
3667
+ export type ListMcpsData = {
3668
+ body?: never;
3669
+ path?: never;
3670
+ query?: never;
3671
+ url: '/bodhi/v1/mcps';
3672
+ };
3673
+ export type ListMcpsErrors = {
3674
+ /**
3675
+ * Invalid request parameters
3676
+ */
3677
+ 400: OpenAiApiError;
3678
+ /**
3679
+ * Not authenticated
3680
+ */
3681
+ 401: OpenAiApiError;
3682
+ /**
3683
+ * Insufficient permissions
3684
+ */
3685
+ 403: OpenAiApiError;
3686
+ /**
3687
+ * Internal server error
3688
+ */
3689
+ 500: OpenAiApiError;
3690
+ };
3691
+ export type ListMcpsError = ListMcpsErrors[keyof ListMcpsErrors];
3692
+ export type ListMcpsResponses = {
3693
+ /**
3694
+ * List of user's MCP instances
3695
+ */
3696
+ 200: ListMcpsResponse;
3697
+ };
3698
+ export type ListMcpsResponse2 = ListMcpsResponses[keyof ListMcpsResponses];
3699
+ export type CreateMcpData = {
3700
+ body: CreateMcpRequest;
3701
+ path?: never;
3702
+ query?: never;
3703
+ url: '/bodhi/v1/mcps';
3704
+ };
3705
+ export type CreateMcpErrors = {
3706
+ /**
3707
+ * Invalid request parameters
3708
+ */
3709
+ 400: OpenAiApiError;
3710
+ /**
3711
+ * Not authenticated
3712
+ */
3713
+ 401: OpenAiApiError;
3714
+ /**
3715
+ * Insufficient permissions
3716
+ */
3717
+ 403: OpenAiApiError;
3718
+ /**
3719
+ * Internal server error
3720
+ */
3721
+ 500: OpenAiApiError;
3722
+ };
3723
+ export type CreateMcpError = CreateMcpErrors[keyof CreateMcpErrors];
3724
+ export type CreateMcpResponses = {
3725
+ /**
3726
+ * MCP created
3727
+ */
3728
+ 201: McpResponse;
3729
+ };
3730
+ export type CreateMcpResponse = CreateMcpResponses[keyof CreateMcpResponses];
3731
+ export type ListMcpAuthConfigsData = {
3732
+ body?: never;
3733
+ path?: never;
3734
+ query: {
3735
+ mcp_server_id: string;
3736
+ };
3737
+ url: '/bodhi/v1/mcps/auth-configs';
3738
+ };
3739
+ export type ListMcpAuthConfigsErrors = {
3740
+ /**
3741
+ * Invalid request parameters
3742
+ */
3743
+ 400: OpenAiApiError;
3744
+ /**
3745
+ * Not authenticated
3746
+ */
3747
+ 401: OpenAiApiError;
3748
+ /**
3749
+ * Insufficient permissions
3750
+ */
3751
+ 403: OpenAiApiError;
3752
+ /**
3753
+ * Internal server error
3754
+ */
3755
+ 500: OpenAiApiError;
3756
+ };
3757
+ export type ListMcpAuthConfigsError = ListMcpAuthConfigsErrors[keyof ListMcpAuthConfigsErrors];
3758
+ export type ListMcpAuthConfigsResponses = {
3759
+ /**
3760
+ * List of auth configs
3761
+ */
3762
+ 200: McpAuthConfigsListResponse;
3763
+ };
3764
+ export type ListMcpAuthConfigsResponse = ListMcpAuthConfigsResponses[keyof ListMcpAuthConfigsResponses];
3765
+ export type CreateMcpAuthConfigData = {
3766
+ body: CreateAuthConfigBody;
3767
+ path?: never;
3768
+ query?: never;
3769
+ url: '/bodhi/v1/mcps/auth-configs';
3770
+ };
3771
+ export type CreateMcpAuthConfigErrors = {
3772
+ /**
3773
+ * Invalid request parameters
3774
+ */
3775
+ 400: OpenAiApiError;
3776
+ /**
3777
+ * Not authenticated
3778
+ */
3779
+ 401: OpenAiApiError;
3780
+ /**
3781
+ * Insufficient permissions
3782
+ */
3783
+ 403: OpenAiApiError;
3784
+ /**
3785
+ * Internal server error
3786
+ */
3787
+ 500: OpenAiApiError;
3788
+ };
3789
+ export type CreateMcpAuthConfigError = CreateMcpAuthConfigErrors[keyof CreateMcpAuthConfigErrors];
3790
+ export type CreateMcpAuthConfigResponses = {
3791
+ /**
3792
+ * Auth config created
3793
+ */
3794
+ 201: McpAuthConfigResponse;
3795
+ };
3796
+ export type CreateMcpAuthConfigResponse = CreateMcpAuthConfigResponses[keyof CreateMcpAuthConfigResponses];
3797
+ export type DeleteMcpAuthConfigData = {
3798
+ body?: never;
3799
+ path: {
3800
+ /**
3801
+ * Auth config UUID
3802
+ */
3803
+ id: string;
3804
+ };
3805
+ query?: never;
3806
+ url: '/bodhi/v1/mcps/auth-configs/{id}';
3807
+ };
3808
+ export type DeleteMcpAuthConfigErrors = {
3809
+ /**
3810
+ * Invalid request parameters
3811
+ */
3812
+ 400: OpenAiApiError;
3813
+ /**
3814
+ * Not authenticated
3815
+ */
3816
+ 401: OpenAiApiError;
3817
+ /**
3818
+ * Insufficient permissions
3819
+ */
3820
+ 403: OpenAiApiError;
3821
+ /**
3822
+ * Not found
3823
+ */
3824
+ 404: unknown;
3825
+ /**
3826
+ * Internal server error
3827
+ */
3828
+ 500: OpenAiApiError;
3829
+ };
3830
+ export type DeleteMcpAuthConfigError = DeleteMcpAuthConfigErrors[keyof DeleteMcpAuthConfigErrors];
3831
+ export type DeleteMcpAuthConfigResponses = {
3832
+ /**
3833
+ * Auth config deleted
3834
+ */
3835
+ 204: void;
3836
+ };
3837
+ export type DeleteMcpAuthConfigResponse = DeleteMcpAuthConfigResponses[keyof DeleteMcpAuthConfigResponses];
3838
+ export type GetMcpAuthConfigData = {
3839
+ body?: never;
3840
+ path: {
3841
+ /**
3842
+ * Auth config UUID
3843
+ */
3844
+ id: string;
3845
+ };
3846
+ query?: never;
3847
+ url: '/bodhi/v1/mcps/auth-configs/{id}';
3848
+ };
3849
+ export type GetMcpAuthConfigErrors = {
3850
+ /**
3851
+ * Invalid request parameters
3852
+ */
3853
+ 400: OpenAiApiError;
3854
+ /**
3855
+ * Not authenticated
3856
+ */
3857
+ 401: OpenAiApiError;
3858
+ /**
3859
+ * Insufficient permissions
3860
+ */
3861
+ 403: OpenAiApiError;
3862
+ /**
3863
+ * Not found
3864
+ */
3865
+ 404: unknown;
3866
+ /**
3867
+ * Internal server error
3868
+ */
3869
+ 500: OpenAiApiError;
3870
+ };
3871
+ export type GetMcpAuthConfigError = GetMcpAuthConfigErrors[keyof GetMcpAuthConfigErrors];
3872
+ export type GetMcpAuthConfigResponses = {
3873
+ /**
3874
+ * Auth config
3875
+ */
3876
+ 200: McpAuthConfigResponse;
3877
+ };
3878
+ export type GetMcpAuthConfigResponse = GetMcpAuthConfigResponses[keyof GetMcpAuthConfigResponses];
3879
+ export type McpOAuthLoginData = {
3880
+ body: OAuthLoginRequest;
3881
+ path: {
3882
+ /**
3883
+ * Auth config UUID
3884
+ */
3885
+ id: string;
3886
+ };
3887
+ query?: never;
3888
+ url: '/bodhi/v1/mcps/auth-configs/{id}/login';
3889
+ };
3890
+ export type McpOAuthLoginErrors = {
3891
+ /**
3892
+ * Invalid request parameters
3893
+ */
3894
+ 400: OpenAiApiError;
3895
+ /**
3896
+ * Not authenticated
3897
+ */
3898
+ 401: OpenAiApiError;
3899
+ /**
3900
+ * Insufficient permissions
3901
+ */
3902
+ 403: OpenAiApiError;
3903
+ /**
3904
+ * Auth config not found
3905
+ */
3906
+ 404: unknown;
3907
+ /**
3908
+ * Internal server error
3909
+ */
3910
+ 500: OpenAiApiError;
3911
+ };
3912
+ export type McpOAuthLoginError = McpOAuthLoginErrors[keyof McpOAuthLoginErrors];
3913
+ export type McpOAuthLoginResponses = {
3914
+ /**
3915
+ * Authorization URL
3916
+ */
3917
+ 200: OAuthLoginResponse;
3918
+ };
3919
+ export type McpOAuthLoginResponse = McpOAuthLoginResponses[keyof McpOAuthLoginResponses];
3920
+ export type McpOAuthTokenExchangeData = {
3921
+ body: OAuthTokenExchangeRequest;
3922
+ path: {
3923
+ /**
3924
+ * Auth config UUID
3925
+ */
3926
+ id: string;
3927
+ };
3928
+ query?: never;
3929
+ url: '/bodhi/v1/mcps/auth-configs/{id}/token';
3930
+ };
3931
+ export type McpOAuthTokenExchangeErrors = {
3932
+ /**
3933
+ * Invalid request parameters
3934
+ */
3935
+ 400: OpenAiApiError;
3936
+ /**
3937
+ * Not authenticated
3938
+ */
3939
+ 401: OpenAiApiError;
3940
+ /**
3941
+ * Insufficient permissions
3942
+ */
3943
+ 403: OpenAiApiError;
3944
+ /**
3945
+ * Auth config not found
3946
+ */
3947
+ 404: unknown;
3948
+ /**
3949
+ * Internal server error
3950
+ */
3951
+ 500: OpenAiApiError;
3952
+ };
3953
+ export type McpOAuthTokenExchangeError = McpOAuthTokenExchangeErrors[keyof McpOAuthTokenExchangeErrors];
3954
+ export type McpOAuthTokenExchangeResponses = {
3955
+ /**
3956
+ * Token stored
3957
+ */
3958
+ 200: OAuthTokenResponse;
3959
+ };
3960
+ export type McpOAuthTokenExchangeResponse = McpOAuthTokenExchangeResponses[keyof McpOAuthTokenExchangeResponses];
3961
+ export type FetchMcpToolsData = {
3962
+ body: FetchMcpToolsRequest;
3963
+ path?: never;
3964
+ query?: never;
3965
+ url: '/bodhi/v1/mcps/fetch-tools';
3966
+ };
3967
+ export type FetchMcpToolsErrors = {
3968
+ /**
3969
+ * Invalid request parameters
3970
+ */
3971
+ 400: OpenAiApiError;
3972
+ /**
3973
+ * Not authenticated
3974
+ */
3975
+ 401: OpenAiApiError;
3976
+ /**
3977
+ * Insufficient permissions
3978
+ */
3979
+ 403: OpenAiApiError;
3980
+ /**
3981
+ * MCP server not found
3982
+ */
3983
+ 404: unknown;
3984
+ /**
3985
+ * Internal server error
3986
+ */
3987
+ 500: OpenAiApiError;
3988
+ };
3989
+ export type FetchMcpToolsError = FetchMcpToolsErrors[keyof FetchMcpToolsErrors];
3990
+ export type FetchMcpToolsResponses = {
3991
+ /**
3992
+ * List of tools from MCP server
3993
+ */
3994
+ 200: McpToolsResponse;
3995
+ };
3996
+ export type FetchMcpToolsResponse = FetchMcpToolsResponses[keyof FetchMcpToolsResponses];
3997
+ export type DeleteMcpOAuthTokenData = {
3998
+ body?: never;
3999
+ path: {
4000
+ /**
4001
+ * OAuth token UUID
4002
+ */
4003
+ token_id: string;
4004
+ };
4005
+ query?: never;
4006
+ url: '/bodhi/v1/mcps/oauth-tokens/{token_id}';
4007
+ };
4008
+ export type DeleteMcpOAuthTokenErrors = {
4009
+ /**
4010
+ * Invalid request parameters
4011
+ */
4012
+ 400: OpenAiApiError;
4013
+ /**
4014
+ * Not authenticated
4015
+ */
4016
+ 401: OpenAiApiError;
4017
+ /**
4018
+ * Insufficient permissions
4019
+ */
4020
+ 403: OpenAiApiError;
4021
+ /**
4022
+ * Not found
4023
+ */
4024
+ 404: unknown;
4025
+ /**
4026
+ * Internal server error
4027
+ */
4028
+ 500: OpenAiApiError;
4029
+ };
4030
+ export type DeleteMcpOAuthTokenError = DeleteMcpOAuthTokenErrors[keyof DeleteMcpOAuthTokenErrors];
4031
+ export type DeleteMcpOAuthTokenResponses = {
4032
+ /**
4033
+ * OAuth token deleted
4034
+ */
4035
+ 204: void;
4036
+ };
4037
+ export type DeleteMcpOAuthTokenResponse = DeleteMcpOAuthTokenResponses[keyof DeleteMcpOAuthTokenResponses];
4038
+ export type GetMcpOAuthTokenData = {
4039
+ body?: never;
4040
+ path: {
4041
+ /**
4042
+ * OAuth token UUID
4043
+ */
4044
+ token_id: string;
4045
+ };
4046
+ query?: never;
4047
+ url: '/bodhi/v1/mcps/oauth-tokens/{token_id}';
4048
+ };
4049
+ export type GetMcpOAuthTokenErrors = {
4050
+ /**
4051
+ * Invalid request parameters
4052
+ */
4053
+ 400: OpenAiApiError;
4054
+ /**
4055
+ * Not authenticated
4056
+ */
4057
+ 401: OpenAiApiError;
4058
+ /**
4059
+ * Insufficient permissions
4060
+ */
4061
+ 403: OpenAiApiError;
4062
+ /**
4063
+ * Not found
4064
+ */
4065
+ 404: unknown;
4066
+ /**
4067
+ * Internal server error
4068
+ */
4069
+ 500: OpenAiApiError;
4070
+ };
4071
+ export type GetMcpOAuthTokenError = GetMcpOAuthTokenErrors[keyof GetMcpOAuthTokenErrors];
4072
+ export type GetMcpOAuthTokenResponses = {
4073
+ /**
4074
+ * OAuth token
4075
+ */
4076
+ 200: OAuthTokenResponse;
4077
+ };
4078
+ export type GetMcpOAuthTokenResponse = GetMcpOAuthTokenResponses[keyof GetMcpOAuthTokenResponses];
4079
+ export type McpOAuthDiscoverAsData = {
4080
+ body: OAuthDiscoverAsRequest;
4081
+ path?: never;
4082
+ query?: never;
4083
+ url: '/bodhi/v1/mcps/oauth/discover-as';
4084
+ };
4085
+ export type McpOAuthDiscoverAsErrors = {
4086
+ /**
4087
+ * Invalid request parameters
4088
+ */
4089
+ 400: OpenAiApiError;
4090
+ /**
4091
+ * Not authenticated
4092
+ */
4093
+ 401: OpenAiApiError;
4094
+ /**
4095
+ * Insufficient permissions
4096
+ */
4097
+ 403: OpenAiApiError;
4098
+ /**
4099
+ * Internal server error
4100
+ */
4101
+ 500: OpenAiApiError;
4102
+ };
4103
+ export type McpOAuthDiscoverAsError = McpOAuthDiscoverAsErrors[keyof McpOAuthDiscoverAsErrors];
4104
+ export type McpOAuthDiscoverAsResponses = {
4105
+ /**
4106
+ * OAuth discovery metadata
4107
+ */
4108
+ 200: OAuthDiscoverAsResponse;
4109
+ };
4110
+ export type McpOAuthDiscoverAsResponse = McpOAuthDiscoverAsResponses[keyof McpOAuthDiscoverAsResponses];
4111
+ export type McpOAuthDiscoverMcpData = {
4112
+ body: OAuthDiscoverMcpRequest;
4113
+ path?: never;
4114
+ query?: never;
4115
+ url: '/bodhi/v1/mcps/oauth/discover-mcp';
4116
+ };
4117
+ export type McpOAuthDiscoverMcpErrors = {
4118
+ /**
4119
+ * Invalid request parameters
4120
+ */
4121
+ 400: OpenAiApiError;
4122
+ /**
4123
+ * Not authenticated
4124
+ */
4125
+ 401: OpenAiApiError;
4126
+ /**
4127
+ * Insufficient permissions
4128
+ */
4129
+ 403: OpenAiApiError;
4130
+ /**
4131
+ * Internal server error
4132
+ */
4133
+ 500: OpenAiApiError;
4134
+ };
4135
+ export type McpOAuthDiscoverMcpError = McpOAuthDiscoverMcpErrors[keyof McpOAuthDiscoverMcpErrors];
4136
+ export type McpOAuthDiscoverMcpResponses = {
4137
+ /**
4138
+ * MCP OAuth discovery metadata
4139
+ */
4140
+ 200: OAuthDiscoverMcpResponse;
4141
+ };
4142
+ export type McpOAuthDiscoverMcpResponse = McpOAuthDiscoverMcpResponses[keyof McpOAuthDiscoverMcpResponses];
4143
+ export type McpOAuthDynamicRegisterStandaloneData = {
4144
+ body: DynamicRegisterRequest;
4145
+ path?: never;
4146
+ query?: never;
4147
+ url: '/bodhi/v1/mcps/oauth/dynamic-register';
4148
+ };
4149
+ export type McpOAuthDynamicRegisterStandaloneErrors = {
4150
+ /**
4151
+ * Invalid request parameters
4152
+ */
4153
+ 400: OpenAiApiError;
4154
+ /**
4155
+ * Not authenticated
4156
+ */
4157
+ 401: OpenAiApiError;
4158
+ /**
4159
+ * Insufficient permissions
4160
+ */
4161
+ 403: OpenAiApiError;
4162
+ /**
4163
+ * Internal server error
4164
+ */
4165
+ 500: OpenAiApiError;
4166
+ };
4167
+ export type McpOAuthDynamicRegisterStandaloneError = McpOAuthDynamicRegisterStandaloneErrors[keyof McpOAuthDynamicRegisterStandaloneErrors];
4168
+ export type McpOAuthDynamicRegisterStandaloneResponses = {
4169
+ /**
4170
+ * Dynamic client registration result
4171
+ */
4172
+ 200: DynamicRegisterResponse;
4173
+ };
4174
+ export type McpOAuthDynamicRegisterStandaloneResponse = McpOAuthDynamicRegisterStandaloneResponses[keyof McpOAuthDynamicRegisterStandaloneResponses];
4175
+ export type ListMcpServersData = {
4176
+ body?: never;
4177
+ path?: never;
4178
+ query?: {
4179
+ /**
4180
+ * Filter by enabled status
4181
+ */
4182
+ enabled?: boolean;
4183
+ };
4184
+ url: '/bodhi/v1/mcps/servers';
4185
+ };
4186
+ export type ListMcpServersErrors = {
4187
+ /**
4188
+ * Invalid request parameters
4189
+ */
4190
+ 400: OpenAiApiError;
4191
+ /**
4192
+ * Not authenticated
4193
+ */
4194
+ 401: OpenAiApiError;
4195
+ /**
4196
+ * Insufficient permissions
4197
+ */
4198
+ 403: OpenAiApiError;
4199
+ /**
4200
+ * Internal server error
4201
+ */
4202
+ 500: OpenAiApiError;
4203
+ };
4204
+ export type ListMcpServersError = ListMcpServersErrors[keyof ListMcpServersErrors];
4205
+ export type ListMcpServersResponses = {
4206
+ /**
4207
+ * List of MCP servers
4208
+ */
4209
+ 200: ListMcpServersResponse;
4210
+ };
4211
+ export type ListMcpServersResponse2 = ListMcpServersResponses[keyof ListMcpServersResponses];
4212
+ export type CreateMcpServerData = {
4213
+ body: CreateMcpServerRequest;
4214
+ path?: never;
4215
+ query?: never;
4216
+ url: '/bodhi/v1/mcps/servers';
2710
4217
  };
2711
- export type DeleteApiModelErrors = {
4218
+ export type CreateMcpServerErrors = {
2712
4219
  /**
2713
4220
  * Invalid request parameters
2714
4221
  */
@@ -2722,34 +4229,34 @@ export type DeleteApiModelErrors = {
2722
4229
  */
2723
4230
  403: OpenAiApiError;
2724
4231
  /**
2725
- * API model not found
4232
+ * URL already exists
2726
4233
  */
2727
- 404: OpenAiApiError;
4234
+ 409: unknown;
2728
4235
  /**
2729
4236
  * Internal server error
2730
4237
  */
2731
4238
  500: OpenAiApiError;
2732
4239
  };
2733
- export type DeleteApiModelError = DeleteApiModelErrors[keyof DeleteApiModelErrors];
2734
- export type DeleteApiModelResponses = {
4240
+ export type CreateMcpServerError = CreateMcpServerErrors[keyof CreateMcpServerErrors];
4241
+ export type CreateMcpServerResponses = {
2735
4242
  /**
2736
- * API model deleted
4243
+ * MCP server created
2737
4244
  */
2738
- 204: void;
4245
+ 201: McpServerResponse;
2739
4246
  };
2740
- export type DeleteApiModelResponse = DeleteApiModelResponses[keyof DeleteApiModelResponses];
2741
- export type GetApiModelData = {
4247
+ export type CreateMcpServerResponse = CreateMcpServerResponses[keyof CreateMcpServerResponses];
4248
+ export type GetMcpServerData = {
2742
4249
  body?: never;
2743
4250
  path: {
2744
4251
  /**
2745
- * Unique identifier for the API model alias
4252
+ * MCP server UUID
2746
4253
  */
2747
4254
  id: string;
2748
4255
  };
2749
4256
  query?: never;
2750
- url: '/bodhi/v1/api-models/{id}';
4257
+ url: '/bodhi/v1/mcps/servers/{id}';
2751
4258
  };
2752
- export type GetApiModelErrors = {
4259
+ export type GetMcpServerErrors = {
2753
4260
  /**
2754
4261
  * Invalid request parameters
2755
4262
  */
@@ -2763,34 +4270,34 @@ export type GetApiModelErrors = {
2763
4270
  */
2764
4271
  403: OpenAiApiError;
2765
4272
  /**
2766
- * API model with specified ID not found
4273
+ * Not found
2767
4274
  */
2768
- 404: OpenAiApiError;
4275
+ 404: unknown;
2769
4276
  /**
2770
4277
  * Internal server error
2771
4278
  */
2772
4279
  500: OpenAiApiError;
2773
4280
  };
2774
- export type GetApiModelError = GetApiModelErrors[keyof GetApiModelErrors];
2775
- export type GetApiModelResponses = {
4281
+ export type GetMcpServerError = GetMcpServerErrors[keyof GetMcpServerErrors];
4282
+ export type GetMcpServerResponses = {
2776
4283
  /**
2777
- * API model configuration retrieved successfully
4284
+ * MCP server
2778
4285
  */
2779
- 200: ApiModelResponse;
4286
+ 200: McpServerResponse;
2780
4287
  };
2781
- export type GetApiModelResponse = GetApiModelResponses[keyof GetApiModelResponses];
2782
- export type UpdateApiModelData = {
2783
- body: UpdateApiModelRequest;
4288
+ export type GetMcpServerResponse = GetMcpServerResponses[keyof GetMcpServerResponses];
4289
+ export type UpdateMcpServerData = {
4290
+ body: UpdateMcpServerRequest;
2784
4291
  path: {
2785
4292
  /**
2786
- * API model ID
4293
+ * MCP server UUID
2787
4294
  */
2788
4295
  id: string;
2789
4296
  };
2790
4297
  query?: never;
2791
- url: '/bodhi/v1/api-models/{id}';
4298
+ url: '/bodhi/v1/mcps/servers/{id}';
2792
4299
  };
2793
- export type UpdateApiModelErrors = {
4300
+ export type UpdateMcpServerErrors = {
2794
4301
  /**
2795
4302
  * Invalid request parameters
2796
4303
  */
@@ -2804,34 +4311,38 @@ export type UpdateApiModelErrors = {
2804
4311
  */
2805
4312
  403: OpenAiApiError;
2806
4313
  /**
2807
- * API model not found
4314
+ * Not found
2808
4315
  */
2809
- 404: OpenAiApiError;
4316
+ 404: unknown;
4317
+ /**
4318
+ * URL already exists
4319
+ */
4320
+ 409: unknown;
2810
4321
  /**
2811
4322
  * Internal server error
2812
4323
  */
2813
4324
  500: OpenAiApiError;
2814
4325
  };
2815
- export type UpdateApiModelError = UpdateApiModelErrors[keyof UpdateApiModelErrors];
2816
- export type UpdateApiModelResponses = {
4326
+ export type UpdateMcpServerError = UpdateMcpServerErrors[keyof UpdateMcpServerErrors];
4327
+ export type UpdateMcpServerResponses = {
2817
4328
  /**
2818
- * API model updated
4329
+ * MCP server updated
2819
4330
  */
2820
- 200: ApiModelResponse;
4331
+ 200: McpServerResponse;
2821
4332
  };
2822
- export type UpdateApiModelResponse = UpdateApiModelResponses[keyof UpdateApiModelResponses];
2823
- export type SyncModelsData = {
4333
+ export type UpdateMcpServerResponse = UpdateMcpServerResponses[keyof UpdateMcpServerResponses];
4334
+ export type DeleteMcpData = {
2824
4335
  body?: never;
2825
4336
  path: {
2826
4337
  /**
2827
- * Unique identifier for the API model alias
4338
+ * MCP instance UUID
2828
4339
  */
2829
4340
  id: string;
2830
4341
  };
2831
4342
  query?: never;
2832
- url: '/bodhi/v1/api-models/{id}/sync-models';
4343
+ url: '/bodhi/v1/mcps/{id}';
2833
4344
  };
2834
- export type SyncModelsErrors = {
4345
+ export type DeleteMcpErrors = {
2835
4346
  /**
2836
4347
  * Invalid request parameters
2837
4348
  */
@@ -2845,7 +4356,7 @@ export type SyncModelsErrors = {
2845
4356
  */
2846
4357
  403: OpenAiApiError;
2847
4358
  /**
2848
- * API model not found
4359
+ * MCP not found
2849
4360
  */
2850
4361
  404: unknown;
2851
4362
  /**
@@ -2853,24 +4364,26 @@ export type SyncModelsErrors = {
2853
4364
  */
2854
4365
  500: OpenAiApiError;
2855
4366
  };
2856
- export type SyncModelsError = SyncModelsErrors[keyof SyncModelsErrors];
2857
- export type SyncModelsResponses = {
4367
+ export type DeleteMcpError = DeleteMcpErrors[keyof DeleteMcpErrors];
4368
+ export type DeleteMcpResponses = {
2858
4369
  /**
2859
- * Models synced to cache successfully
4370
+ * MCP deleted
2860
4371
  */
2861
- 200: ApiModelResponse;
4372
+ 204: void;
2862
4373
  };
2863
- export type SyncModelsResponse = SyncModelsResponses[keyof SyncModelsResponses];
2864
- export type RequestAccessData = {
2865
- /**
2866
- * Application client requesting access
2867
- */
2868
- body: AppAccessRequest;
2869
- path?: never;
4374
+ export type DeleteMcpResponse = DeleteMcpResponses[keyof DeleteMcpResponses];
4375
+ export type GetMcpData = {
4376
+ body?: never;
4377
+ path: {
4378
+ /**
4379
+ * MCP instance UUID
4380
+ */
4381
+ id: string;
4382
+ };
2870
4383
  query?: never;
2871
- url: '/bodhi/v1/apps/request-access';
4384
+ url: '/bodhi/v1/mcps/{id}';
2872
4385
  };
2873
- export type RequestAccessErrors = {
4386
+ export type GetMcpErrors = {
2874
4387
  /**
2875
4388
  * Invalid request parameters
2876
4389
  */
@@ -2883,29 +4396,35 @@ export type RequestAccessErrors = {
2883
4396
  * Insufficient permissions
2884
4397
  */
2885
4398
  403: OpenAiApiError;
4399
+ /**
4400
+ * MCP not found
4401
+ */
4402
+ 404: unknown;
2886
4403
  /**
2887
4404
  * Internal server error
2888
4405
  */
2889
4406
  500: OpenAiApiError;
2890
4407
  };
2891
- export type RequestAccessError = RequestAccessErrors[keyof RequestAccessErrors];
2892
- export type RequestAccessResponses = {
4408
+ export type GetMcpError = GetMcpErrors[keyof GetMcpErrors];
4409
+ export type GetMcpResponses = {
2893
4410
  /**
2894
- * Access granted successfully
4411
+ * MCP instance
2895
4412
  */
2896
- 200: AppAccessResponse;
4413
+ 200: McpResponse;
2897
4414
  };
2898
- export type RequestAccessResponse = RequestAccessResponses[keyof RequestAccessResponses];
2899
- export type CompleteOAuthFlowData = {
2900
- /**
2901
- * OAuth callback parameters from authorization server
2902
- */
2903
- body: AuthCallbackRequest;
2904
- path?: never;
4415
+ export type GetMcpResponse = GetMcpResponses[keyof GetMcpResponses];
4416
+ export type UpdateMcpData = {
4417
+ body: UpdateMcpRequest;
4418
+ path: {
4419
+ /**
4420
+ * MCP instance UUID
4421
+ */
4422
+ id: string;
4423
+ };
2905
4424
  query?: never;
2906
- url: '/bodhi/v1/auth/callback';
4425
+ url: '/bodhi/v1/mcps/{id}';
2907
4426
  };
2908
- export type CompleteOAuthFlowErrors = {
4427
+ export type UpdateMcpErrors = {
2909
4428
  /**
2910
4429
  * Invalid request parameters
2911
4430
  */
@@ -2919,29 +4438,34 @@ export type CompleteOAuthFlowErrors = {
2919
4438
  */
2920
4439
  403: OpenAiApiError;
2921
4440
  /**
2922
- * OAuth error, invalid request parameters, or state mismatch
4441
+ * MCP not found
2923
4442
  */
2924
- 422: OpenAiApiError;
4443
+ 404: unknown;
2925
4444
  /**
2926
4445
  * Internal server error
2927
4446
  */
2928
4447
  500: OpenAiApiError;
2929
4448
  };
2930
- export type CompleteOAuthFlowError = CompleteOAuthFlowErrors[keyof CompleteOAuthFlowErrors];
2931
- export type CompleteOAuthFlowResponses = {
4449
+ export type UpdateMcpError = UpdateMcpErrors[keyof UpdateMcpErrors];
4450
+ export type UpdateMcpResponses = {
2932
4451
  /**
2933
- * OAuth flow completed successfully, user authenticated
4452
+ * MCP updated
2934
4453
  */
2935
- 200: RedirectResponse;
4454
+ 200: McpResponse;
2936
4455
  };
2937
- export type CompleteOAuthFlowResponse = CompleteOAuthFlowResponses[keyof CompleteOAuthFlowResponses];
2938
- export type InitiateOAuthFlowData = {
2939
- body: unknown;
2940
- path?: never;
4456
+ export type UpdateMcpResponse = UpdateMcpResponses[keyof UpdateMcpResponses];
4457
+ export type RefreshMcpToolsData = {
4458
+ body?: never;
4459
+ path: {
4460
+ /**
4461
+ * MCP instance UUID
4462
+ */
4463
+ id: string;
4464
+ };
2941
4465
  query?: never;
2942
- url: '/bodhi/v1/auth/initiate';
4466
+ url: '/bodhi/v1/mcps/{id}/tools/refresh';
2943
4467
  };
2944
- export type InitiateOAuthFlowErrors = {
4468
+ export type RefreshMcpToolsErrors = {
2945
4469
  /**
2946
4470
  * Invalid request parameters
2947
4471
  */
@@ -2955,53 +4479,38 @@ export type InitiateOAuthFlowErrors = {
2955
4479
  */
2956
4480
  403: OpenAiApiError;
2957
4481
  /**
2958
- * Internal server error
2959
- */
2960
- 500: OpenAiApiError;
2961
- };
2962
- export type InitiateOAuthFlowError = InitiateOAuthFlowErrors[keyof InitiateOAuthFlowErrors];
2963
- export type InitiateOAuthFlowResponses = {
2964
- /**
2965
- * User already authenticated, home page URL provided
2966
- */
2967
- 200: RedirectResponse;
2968
- /**
2969
- * User not authenticated, OAuth authorization URL provided
2970
- */
2971
- 201: RedirectResponse;
2972
- };
2973
- export type InitiateOAuthFlowResponse = InitiateOAuthFlowResponses[keyof InitiateOAuthFlowResponses];
2974
- export type GetAppInfoData = {
2975
- body?: never;
2976
- path?: never;
2977
- query?: never;
2978
- url: '/bodhi/v1/info';
2979
- };
2980
- export type GetAppInfoErrors = {
2981
- /**
2982
- * Invalid request parameters
4482
+ * MCP not found
2983
4483
  */
2984
- 400: OpenAiApiError;
4484
+ 404: unknown;
2985
4485
  /**
2986
4486
  * Internal server error
2987
4487
  */
2988
4488
  500: OpenAiApiError;
2989
4489
  };
2990
- export type GetAppInfoError = GetAppInfoErrors[keyof GetAppInfoErrors];
2991
- export type GetAppInfoResponses = {
4490
+ export type RefreshMcpToolsError = RefreshMcpToolsErrors[keyof RefreshMcpToolsErrors];
4491
+ export type RefreshMcpToolsResponses = {
2992
4492
  /**
2993
- * Application information retrieved successfully
4493
+ * Refreshed list of tools
2994
4494
  */
2995
- 200: AppInfo;
4495
+ 200: McpToolsResponse;
2996
4496
  };
2997
- export type GetAppInfoResponse = GetAppInfoResponses[keyof GetAppInfoResponses];
2998
- export type LogoutUserData = {
2999
- body?: never;
3000
- path?: never;
4497
+ export type RefreshMcpToolsResponse = RefreshMcpToolsResponses[keyof RefreshMcpToolsResponses];
4498
+ export type ExecuteMcpToolData = {
4499
+ body: McpExecuteRequest;
4500
+ path: {
4501
+ /**
4502
+ * MCP instance UUID
4503
+ */
4504
+ id: string;
4505
+ /**
4506
+ * Tool name to execute
4507
+ */
4508
+ tool_name: string;
4509
+ };
3001
4510
  query?: never;
3002
- url: '/bodhi/v1/logout';
4511
+ url: '/bodhi/v1/mcps/{id}/tools/{tool_name}/execute';
3003
4512
  };
3004
- export type LogoutUserErrors = {
4513
+ export type ExecuteMcpToolErrors = {
3005
4514
  /**
3006
4515
  * Invalid request parameters
3007
4516
  */
@@ -3014,19 +4523,23 @@ export type LogoutUserErrors = {
3014
4523
  * Insufficient permissions
3015
4524
  */
3016
4525
  403: OpenAiApiError;
4526
+ /**
4527
+ * MCP or tool not found
4528
+ */
4529
+ 404: unknown;
3017
4530
  /**
3018
4531
  * Internal server error
3019
4532
  */
3020
4533
  500: OpenAiApiError;
3021
4534
  };
3022
- export type LogoutUserError = LogoutUserErrors[keyof LogoutUserErrors];
3023
- export type LogoutUserResponses = {
4535
+ export type ExecuteMcpToolError = ExecuteMcpToolErrors[keyof ExecuteMcpToolErrors];
4536
+ export type ExecuteMcpToolResponses = {
3024
4537
  /**
3025
- * User logged out successfully
4538
+ * Tool execution result
3026
4539
  */
3027
- 200: RedirectResponse;
4540
+ 200: McpExecuteResponse;
3028
4541
  };
3029
- export type LogoutUserResponse = LogoutUserResponses[keyof LogoutUserResponses];
4542
+ export type ExecuteMcpToolResponse = ExecuteMcpToolResponses[keyof ExecuteMcpToolResponses];
3030
4543
  export type ListModelFilesData = {
3031
4544
  body?: never;
3032
4545
  path?: never;
@@ -3164,51 +4677,6 @@ export type PullModelFileResponses = {
3164
4677
  201: DownloadRequest;
3165
4678
  };
3166
4679
  export type PullModelFileResponse = PullModelFileResponses[keyof PullModelFileResponses];
3167
- export type PullModelByAliasData = {
3168
- body?: never;
3169
- path: {
3170
- /**
3171
- * Predefined model alias. Available aliases include popular models like llama2:chat, mistral:instruct, phi3:mini, etc. Use the /models endpoint to see all available aliases.
3172
- */
3173
- alias: string;
3174
- };
3175
- query?: never;
3176
- url: '/bodhi/v1/modelfiles/pull/{alias}';
3177
- };
3178
- export type PullModelByAliasErrors = {
3179
- /**
3180
- * Invalid request parameters
3181
- */
3182
- 400: OpenAiApiError;
3183
- /**
3184
- * Not authenticated
3185
- */
3186
- 401: OpenAiApiError;
3187
- /**
3188
- * Insufficient permissions
3189
- */
3190
- 403: OpenAiApiError;
3191
- /**
3192
- * Alias not found
3193
- */
3194
- 404: OpenAiApiError;
3195
- /**
3196
- * Internal server error
3197
- */
3198
- 500: OpenAiApiError;
3199
- };
3200
- export type PullModelByAliasError = PullModelByAliasErrors[keyof PullModelByAliasErrors];
3201
- export type PullModelByAliasResponses = {
3202
- /**
3203
- * Existing download request found
3204
- */
3205
- 200: DownloadRequest;
3206
- /**
3207
- * Download request created
3208
- */
3209
- 201: DownloadRequest;
3210
- };
3211
- export type PullModelByAliasResponse = PullModelByAliasResponses[keyof PullModelByAliasResponses];
3212
4680
  export type GetDownloadStatusData = {
3213
4681
  body?: never;
3214
4682
  path: {
@@ -3374,16 +4842,56 @@ export type RefreshModelMetadataResponses = {
3374
4842
  202: RefreshResponse;
3375
4843
  };
3376
4844
  export type RefreshModelMetadataResponse = RefreshModelMetadataResponses[keyof RefreshModelMetadataResponses];
4845
+ export type DeleteAliasData = {
4846
+ body?: never;
4847
+ path: {
4848
+ /**
4849
+ * UUID of the alias to delete
4850
+ */
4851
+ id: string;
4852
+ };
4853
+ query?: never;
4854
+ url: '/bodhi/v1/models/{id}';
4855
+ };
4856
+ export type DeleteAliasErrors = {
4857
+ /**
4858
+ * Invalid request parameters
4859
+ */
4860
+ 400: OpenAiApiError;
4861
+ /**
4862
+ * Not authenticated
4863
+ */
4864
+ 401: OpenAiApiError;
4865
+ /**
4866
+ * Insufficient permissions
4867
+ */
4868
+ 403: OpenAiApiError;
4869
+ /**
4870
+ * Alias not found
4871
+ */
4872
+ 404: unknown;
4873
+ /**
4874
+ * Internal server error
4875
+ */
4876
+ 500: OpenAiApiError;
4877
+ };
4878
+ export type DeleteAliasError = DeleteAliasErrors[keyof DeleteAliasErrors];
4879
+ export type DeleteAliasResponses = {
4880
+ /**
4881
+ * Alias deleted successfully
4882
+ */
4883
+ 200: unknown;
4884
+ };
3377
4885
  export type GetAliasData = {
3378
4886
  body?: never;
3379
4887
  path: {
3380
4888
  /**
3381
- * Alias identifier for the model
4889
+ * UUID of the alias
3382
4890
  */
3383
- alias: string;
4891
+ id: string;
3384
4892
  };
3385
4893
  query?: never;
3386
- url: '/bodhi/v1/models/{alias}';
4894
+ url: '/bodhi/v1/models/{id}';
3387
4895
  };
3388
4896
  export type GetAliasErrors = {
3389
4897
  /**
@@ -3419,7 +4927,7 @@ export type UpdateAliasData = {
3419
4927
  body: UpdateAliasRequest;
3420
4928
  path: {
3421
4929
  /**
3422
- * Alias identifier
4930
+ * UUID of the alias to update
3423
4931
  */
3424
4932
  id: string;
3425
4933
  };
@@ -3452,6 +4960,47 @@ export type UpdateAliasResponses = {
3452
4960
  200: UserAliasResponse;
3453
4961
  };
3454
4962
  export type UpdateAliasResponse = UpdateAliasResponses[keyof UpdateAliasResponses];
4963
+ export type CopyAliasData = {
4964
+ body: CopyAliasRequest;
4965
+ path: {
4966
+ /**
4967
+ * UUID of the alias to copy
4968
+ */
4969
+ id: string;
4970
+ };
4971
+ query?: never;
4972
+ url: '/bodhi/v1/models/{id}/copy';
4973
+ };
4974
+ export type CopyAliasErrors = {
4975
+ /**
4976
+ * Invalid request parameters
4977
+ */
4978
+ 400: OpenAiApiError;
4979
+ /**
4980
+ * Not authenticated
4981
+ */
4982
+ 401: OpenAiApiError;
4983
+ /**
4984
+ * Insufficient permissions
4985
+ */
4986
+ 403: OpenAiApiError;
4987
+ /**
4988
+ * Source alias not found
4989
+ */
4990
+ 404: unknown;
4991
+ /**
4992
+ * Internal server error
4993
+ */
4994
+ 500: OpenAiApiError;
4995
+ };
4996
+ export type CopyAliasError = CopyAliasErrors[keyof CopyAliasErrors];
4997
+ export type CopyAliasResponses = {
4998
+ /**
4999
+ * Alias copied successfully
5000
+ */
5001
+ 201: UserAliasResponse;
5002
+ };
5003
+ export type CopyAliasResponse = CopyAliasResponses[keyof CopyAliasResponses];
3455
5004
  export type GetQueueStatusData = {
3456
5005
  body?: never;
3457
5006
  path?: never;
@@ -3797,12 +5346,12 @@ export type DisableToolsetTypeData = {
3797
5346
  body?: never;
3798
5347
  path: {
3799
5348
  /**
3800
- * Toolset type identifier
5349
+ * Toolset type identifier (e.g., 'builtin-exa-search')
3801
5350
  */
3802
- type_id: string;
5351
+ toolset_type: string;
3803
5352
  };
3804
5353
  query?: never;
3805
- url: '/bodhi/v1/toolset_types/{type_id}/app-config';
5354
+ url: '/bodhi/v1/toolset_types/{toolset_type}/app-config';
3806
5355
  };
3807
5356
  export type DisableToolsetTypeErrors = {
3808
5357
  /**
@@ -3831,19 +5380,19 @@ export type DisableToolsetTypeResponses = {
3831
5380
  /**
3832
5381
  * Toolset type disabled
3833
5382
  */
3834
- 200: AppToolsetConfigResponse;
5383
+ 200: AppToolsetConfig;
3835
5384
  };
3836
5385
  export type DisableToolsetTypeResponse = DisableToolsetTypeResponses[keyof DisableToolsetTypeResponses];
3837
5386
  export type EnableToolsetTypeData = {
3838
5387
  body?: never;
3839
5388
  path: {
3840
5389
  /**
3841
- * Toolset type identifier
5390
+ * Toolset type identifier (e.g., 'builtin-exa-search')
3842
5391
  */
3843
- type_id: string;
5392
+ toolset_type: string;
3844
5393
  };
3845
5394
  query?: never;
3846
- url: '/bodhi/v1/toolset_types/{type_id}/app-config';
5395
+ url: '/bodhi/v1/toolset_types/{toolset_type}/app-config';
3847
5396
  };
3848
5397
  export type EnableToolsetTypeErrors = {
3849
5398
  /**
@@ -3872,7 +5421,7 @@ export type EnableToolsetTypeResponses = {
3872
5421
  /**
3873
5422
  * Toolset type enabled
3874
5423
  */
3875
- 200: AppToolsetConfigResponse;
5424
+ 200: AppToolsetConfig;
3876
5425
  };
3877
5426
  export type EnableToolsetTypeResponse = EnableToolsetTypeResponses[keyof EnableToolsetTypeResponses];
3878
5427
  export type ListToolsetsData = {
@@ -4070,7 +5619,7 @@ export type UpdateToolsetResponses = {
4070
5619
  200: ToolsetResponse;
4071
5620
  };
4072
5621
  export type UpdateToolsetResponse = UpdateToolsetResponses[keyof UpdateToolsetResponses];
4073
- export type ExecuteToolsetData = {
5622
+ export type ExecuteToolsetToolData = {
4074
5623
  body: ExecuteToolsetRequest;
4075
5624
  path: {
4076
5625
  /**
@@ -4078,14 +5627,14 @@ export type ExecuteToolsetData = {
4078
5627
  */
4079
5628
  id: string;
4080
5629
  /**
4081
- * Tool method name
5630
+ * Tool name to execute
4082
5631
  */
4083
- method: string;
5632
+ tool_name: string;
4084
5633
  };
4085
5634
  query?: never;
4086
- url: '/bodhi/v1/toolsets/{id}/execute/{method}';
5635
+ url: '/bodhi/v1/toolsets/{id}/tools/{tool_name}/execute';
4087
5636
  };
4088
- export type ExecuteToolsetErrors = {
5637
+ export type ExecuteToolsetToolErrors = {
4089
5638
  /**
4090
5639
  * Invalid request parameters
4091
5640
  */
@@ -4107,14 +5656,14 @@ export type ExecuteToolsetErrors = {
4107
5656
  */
4108
5657
  500: OpenAiApiError;
4109
5658
  };
4110
- export type ExecuteToolsetError = ExecuteToolsetErrors[keyof ExecuteToolsetErrors];
4111
- export type ExecuteToolsetResponses = {
5659
+ export type ExecuteToolsetToolError = ExecuteToolsetToolErrors[keyof ExecuteToolsetToolErrors];
5660
+ export type ExecuteToolsetToolResponses = {
4112
5661
  /**
4113
5662
  * Tool execution result
4114
5663
  */
4115
5664
  200: ToolsetExecutionResponse;
4116
5665
  };
4117
- export type ExecuteToolsetResponse = ExecuteToolsetResponses[keyof ExecuteToolsetResponses];
5666
+ export type ExecuteToolsetToolResponse = ExecuteToolsetToolResponses[keyof ExecuteToolsetToolResponses];
4118
5667
  export type GetCurrentUserData = {
4119
5668
  body?: never;
4120
5669
  path?: never;