@bodhiapp/ts-client 0.1.16 → 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,5 +1,86 @@
1
1
  // This file is auto-generated by @hey-api/openapi-ts
2
2
 
3
+ export type AccessRequestActionResponse = {
4
+ /**
5
+ * Updated status after action
6
+ */
7
+ status: AppAccessRequestStatus;
8
+ /**
9
+ * Flow type of the access request
10
+ */
11
+ flow_type: FlowType;
12
+ /**
13
+ * Redirect URL (present for redirect flow)
14
+ */
15
+ redirect_url?: string | null;
16
+ };
17
+
18
+ export type AccessRequestReviewResponse = {
19
+ /**
20
+ * Access request ID
21
+ */
22
+ id: string;
23
+ /**
24
+ * App client ID
25
+ */
26
+ app_client_id: string;
27
+ /**
28
+ * App name from KC (if available)
29
+ */
30
+ app_name?: string | null;
31
+ /**
32
+ * App description from KC (if available)
33
+ */
34
+ app_description?: string | null;
35
+ /**
36
+ * Flow type: "redirect" or "popup"
37
+ */
38
+ flow_type: FlowType;
39
+ /**
40
+ * Current status
41
+ */
42
+ status: AppAccessRequestStatus;
43
+ /**
44
+ * Role requested by the app
45
+ */
46
+ requested_role: string;
47
+ /**
48
+ * Resources requested
49
+ */
50
+ requested: RequestedResources;
51
+ /**
52
+ * Tool type information with user instances
53
+ */
54
+ tools_info: Array<ToolTypeReviewInfo>;
55
+ /**
56
+ * MCP server information with user instances
57
+ */
58
+ mcps_info?: Array<McpServerReviewInfo>;
59
+ };
60
+
61
+ export type AccessRequestStatusResponse = {
62
+ /**
63
+ * Access request ID
64
+ */
65
+ id: string;
66
+ /**
67
+ * Current status: "draft", "approved", "denied", "failed"
68
+ */
69
+ status: AppAccessRequestStatus;
70
+ /**
71
+ * Role requested by the app
72
+ */
73
+ requested_role: string;
74
+ /**
75
+ * Role approved (present when approved)
76
+ */
77
+ approved_role?: string | null;
78
+ /**
79
+ * Access request scope (present when user-approved with tools)
80
+ */
81
+ access_request_scope?: string | null;
82
+ };
83
+
3
84
  /**
4
85
  * Flat enum representing all types of model aliases
5
86
  * Each variant is identified by the source field
@@ -22,10 +103,10 @@ export type ApiAlias = {
22
103
  id: string;
23
104
  api_format: ApiFormat;
24
105
  base_url: string;
25
- models: Array<string>;
106
+ models: JsonVec;
26
107
  prefix?: string | null;
27
108
  forward_all_with_prefix: boolean;
28
- models_cache: Array<string>;
109
+ models_cache: JsonVec;
29
110
  cache_fetched_at: string;
30
111
  created_at: string;
31
112
  updated_at: string;
@@ -126,45 +207,7 @@ export type ApiTokenResponse = {
126
207
  token: string;
127
208
  };
128
209
 
129
- export type AppAccessRequest = {
130
- app_client_id: string;
131
- /**
132
- * Optional version for cache lookup - if matches cached config, skips auth server call
133
- */
134
- version?: string | null;
135
- /**
136
- * Optional toolset scope IDs to register with resource-client for token exchange
137
- */
138
- toolset_scope_ids?: Array<string> | null;
139
- };
140
-
141
- export type AppAccessResponse = {
142
- scope: string;
143
- /**
144
- * List of toolsets the app-client is configured to access
145
- */
146
- toolsets?: Array<AppClientToolset>;
147
- /**
148
- * Version of app-client's toolset configuration on auth server
149
- */
150
- app_client_config_version?: string | null;
151
- };
152
-
153
- /**
154
- * Toolset configuration from app-client registration
155
- */
156
- export type AppClientToolset = {
157
- id: string;
158
- scope: string;
159
- /**
160
- * client scope UUID for cache validation
161
- */
162
- scope_id?: string;
163
- /**
164
- * True if scope has been added to resource-client as optional scope
165
- */
166
- added_to_resource_client?: boolean | null;
167
- };
210
+ export type AppAccessRequestStatus = 'draft' | 'approved' | 'denied' | 'failed' | 'expired';
168
211
 
169
212
  /**
170
213
  * Application information and status
@@ -186,42 +229,54 @@ export type AppInfo = {
186
229
 
187
230
  export type AppRole = ResourceRole | TokenScope | UserScope;
188
231
 
189
- export type AppStatus = 'setup' | 'ready' | 'resource-admin';
232
+ export type AppStatus = 'setup' | 'ready' | 'resource_admin';
190
233
 
191
234
  /**
192
- * App-level configuration for a toolset (admin-controlled)
235
+ * Application-level toolset configuration
193
236
  */
194
237
  export type AppToolsetConfig = {
195
238
  /**
196
- * OAuth scope string (e.g., "scope_toolset-builtin-exa-web-search")
239
+ * Toolset type identifier (e.g., "builtin-exa-search")
240
+ */
241
+ toolset_type: string;
242
+ /**
243
+ * Human-readable name (e.g., "Exa Web Search")
197
244
  */
198
- scope: string;
245
+ name: string;
199
246
  /**
200
- * Keycloak client scope UUID (environment-specific)
247
+ * Description of the toolset
201
248
  */
202
- scope_uuid: string;
249
+ description: string;
203
250
  /**
204
- * Whether the toolset is enabled for this app instance
251
+ * Whether this toolset type is enabled at app level
205
252
  */
206
253
  enabled: boolean;
207
254
  /**
208
- * User ID of the admin who last updated this configuration
255
+ * User who last updated this config
209
256
  */
210
257
  updated_by: string;
211
258
  /**
212
- * When this configuration was created
259
+ * When this config was created
213
260
  */
214
261
  created_at: string;
215
262
  /**
216
- * When this configuration was last updated
263
+ * When this config was last updated
217
264
  */
218
265
  updated_at: string;
219
266
  };
220
267
 
221
- /**
222
- * The app-level toolset configuration
223
- */
224
- export type AppToolsetConfigResponse = AppToolsetConfig;
268
+ export type ApprovalStatus = 'approved' | 'denied';
269
+
270
+ export type ApproveAccessRequestBody = {
271
+ /**
272
+ * Role to grant for the approved request (scope_user_user or scope_user_power_user)
273
+ */
274
+ approved_role: UserScope;
275
+ /**
276
+ * Approved resources with selections
277
+ */
278
+ approved: ApprovedResources;
279
+ };
225
280
 
226
281
  /**
227
282
  * Request body for approving access with role assignment
@@ -233,6 +288,11 @@ export type ApproveUserAccessRequest = {
233
288
  role: ResourceRole;
234
289
  };
235
290
 
291
+ export type ApprovedResources = {
292
+ toolsets?: Array<ToolsetApproval>;
293
+ mcps?: Array<McpApproval>;
294
+ };
295
+
236
296
  export type AuthCallbackRequest = {
237
297
  /**
238
298
  * OAuth authorization code from successful authentication (required for success flow)
@@ -773,6 +833,45 @@ export type ContextLimits = {
773
833
  max_output_tokens?: number | null;
774
834
  };
775
835
 
836
+ export type CopyAliasRequest = {
837
+ alias: string;
838
+ };
839
+
840
+ export type CreateAccessRequestBody = {
841
+ /**
842
+ * App client ID from Keycloak
843
+ */
844
+ app_client_id: string;
845
+ /**
846
+ * Flow type: "redirect" or "popup"
847
+ */
848
+ flow_type: FlowType;
849
+ /**
850
+ * Redirect URL for result notification (required for redirect flow)
851
+ */
852
+ redirect_url?: string | null;
853
+ /**
854
+ * Role requested for the external app (scope_user_user or scope_user_power_user)
855
+ */
856
+ requested_role: UserScope;
857
+ requested?: null | RequestedResources;
858
+ };
859
+
860
+ export type CreateAccessRequestResponse = {
861
+ /**
862
+ * Access request ID
863
+ */
864
+ id: string;
865
+ /**
866
+ * Status (always "draft")
867
+ */
868
+ status: AppAccessRequestStatus;
869
+ /**
870
+ * Review URL for user to approve/deny
871
+ */
872
+ review_url: string;
873
+ };
874
+
776
875
  export type CreateAliasRequest = {
777
876
  alias: string;
778
877
  repo: string;
@@ -826,6 +925,13 @@ export type CreateApiTokenRequest = {
826
925
  scope: TokenScope;
827
926
  };
828
927
 
928
+ /**
929
+ * Wrapper for creating auth configs with server_id in body instead of path
930
+ */
931
+ export type CreateAuthConfigBody = CreateMcpAuthConfigRequest & {
932
+ mcp_server_id: string;
933
+ };
934
+
829
935
  export type CreateChatCompletionRequest = {
830
936
  /**
831
937
  * A list of messages comprising the conversation so far. Depending on the
@@ -1123,18 +1229,65 @@ export type CreateEmbeddingResponse = {
1123
1229
  usage: EmbeddingUsage;
1124
1230
  };
1125
1231
 
1232
+ /**
1233
+ * Discriminated union for creating any type of MCP auth config.
1234
+ * The JSON `"type"` field determines the variant: `"header"` or `"oauth"`.
1235
+ */
1236
+ export type CreateMcpAuthConfigRequest = {
1237
+ name: string;
1238
+ header_key: string;
1239
+ header_value: string;
1240
+ type: 'header';
1241
+ } | {
1242
+ name: string;
1243
+ client_id: string;
1244
+ authorization_endpoint: string;
1245
+ token_endpoint: string;
1246
+ client_secret?: string | null;
1247
+ scopes?: string | null;
1248
+ /**
1249
+ * `"pre_registered"` (default) or `"dynamic_registration"`
1250
+ */
1251
+ registration_type?: RegistrationType;
1252
+ registration_access_token?: string | null;
1253
+ registration_endpoint?: string | null;
1254
+ token_endpoint_auth_method?: string | null;
1255
+ client_id_issued_at?: number | null;
1256
+ type: 'oauth';
1257
+ };
1258
+
1259
+ export type CreateMcpRequest = {
1260
+ name: string;
1261
+ slug: string;
1262
+ mcp_server_id: string;
1263
+ description?: string | null;
1264
+ enabled: boolean;
1265
+ tools_cache?: Array<McpTool> | null;
1266
+ tools_filter?: Array<string> | null;
1267
+ auth_type?: McpAuthType;
1268
+ auth_uuid?: string | null;
1269
+ };
1270
+
1271
+ export type CreateMcpServerRequest = {
1272
+ url: string;
1273
+ name: string;
1274
+ description?: string | null;
1275
+ enabled: boolean;
1276
+ auth_config?: null | CreateMcpAuthConfigRequest;
1277
+ };
1278
+
1126
1279
  /**
1127
1280
  * Request to create a toolset
1128
1281
  */
1129
1282
  export type CreateToolsetRequest = {
1130
1283
  /**
1131
- * Toolset scope UUID identifier (e.g., "4ff0e163-36fb-47d6-a5ef-26e396f067d6")
1284
+ * Toolset type identifier (e.g., "builtin-exa-search")
1132
1285
  */
1133
- scope_uuid: string;
1286
+ toolset_type: string;
1134
1287
  /**
1135
- * User-defined name for this toolset (2-24 chars, alphanumeric + spaces/dash/underscore)
1288
+ * User-defined slug for this toolset (1-24 chars, alphanumeric + hyphens)
1136
1289
  */
1137
- name: string;
1290
+ slug: string;
1138
1291
  /**
1139
1292
  * Optional description for this toolset
1140
1293
  */
@@ -1221,6 +1374,20 @@ export type DownloadStatus = 'pending' | 'completed' | 'error';
1221
1374
 
1222
1375
  export type Duration = string;
1223
1376
 
1377
+ export type DynamicRegisterRequest = {
1378
+ registration_endpoint: string;
1379
+ redirect_uri: string;
1380
+ scopes?: string | null;
1381
+ };
1382
+
1383
+ export type DynamicRegisterResponse = {
1384
+ client_id: string;
1385
+ client_secret?: string | null;
1386
+ client_id_issued_at?: number | null;
1387
+ token_endpoint_auth_method?: string | null;
1388
+ registration_access_token?: string | null;
1389
+ };
1390
+
1224
1391
  /**
1225
1392
  * Represents an embedding vector returned by embedding endpoint.
1226
1393
  */
@@ -1269,9 +1436,11 @@ export type ErrorBody = {
1269
1436
  */
1270
1437
  code?: string | null;
1271
1438
  /**
1272
- * Parameter name that caused the error (for validation errors)
1439
+ * Additional error parameters as key-value pairs (for validation errors)
1273
1440
  */
1274
- param?: string | null;
1441
+ param?: {
1442
+ [key: string]: string;
1443
+ } | null;
1275
1444
  };
1276
1445
 
1277
1446
  /**
@@ -1284,6 +1453,12 @@ export type ExecuteToolsetRequest = {
1284
1453
  params: unknown;
1285
1454
  };
1286
1455
 
1456
+ export type FetchMcpToolsRequest = {
1457
+ mcp_server_id: string;
1458
+ auth?: null | McpAuth;
1459
+ auth_uuid?: string | null;
1460
+ };
1461
+
1287
1462
  /**
1288
1463
  * Request to fetch available models from provider
1289
1464
  */
@@ -1324,6 +1499,8 @@ export type FileObject = {
1324
1499
 
1325
1500
  export type FinishReason = 'stop' | 'length' | 'tool_calls' | 'content_filter' | 'function_call';
1326
1501
 
1502
+ export type FlowType = 'redirect' | 'popup';
1503
+
1327
1504
  /**
1328
1505
  * The name and arguments of a function that should be called, as generated by the model.
1329
1506
  */
@@ -1425,6 +1602,16 @@ export type InputAudio = {
1425
1602
 
1426
1603
  export type InputAudioFormat = 'wav' | 'mp3';
1427
1604
 
1605
+ export type JsonVec = Array<string>;
1606
+
1607
+ export type ListMcpServersResponse = {
1608
+ mcp_servers: Array<McpServerResponse>;
1609
+ };
1610
+
1611
+ export type ListMcpsResponse = {
1612
+ mcps: Array<McpResponse>;
1613
+ };
1614
+
1428
1615
  export type ListModelResponse = {
1429
1616
  object: string;
1430
1617
  data: Array<Model>;
@@ -1434,7 +1621,7 @@ export type ListModelResponse = {
1434
1621
  * List of toolset types
1435
1622
  */
1436
1623
  export type ListToolsetTypesResponse = {
1437
- types: Array<ToolsetTypeResponse>;
1624
+ types: Array<ToolsetDefinition>;
1438
1625
  };
1439
1626
 
1440
1627
  /**
@@ -1462,98 +1649,339 @@ export type LocalModelResponse = {
1462
1649
  metadata?: null | ModelMetadata;
1463
1650
  };
1464
1651
 
1465
- export type Message = {
1466
- role: string;
1467
- content: string;
1468
- images?: Array<string> | null;
1469
- };
1470
-
1471
- /**
1472
- * Set of 16 key-value pairs that can be attached to an object.
1473
- * This can be useful for storing additional information about the
1474
- * object in a structured format, and querying for objects via API
1475
- * or the dashboard. Keys are strings with a maximum length of 64
1476
- * characters. Values are strings with a maximum length of 512
1477
- * characters.
1478
- */
1479
- export type Metadata = unknown;
1480
-
1481
1652
  /**
1482
- * Describes an OpenAI model offering that can be used with the API.
1653
+ * User-owned MCP server instance with tool caching and filtering.
1483
1654
  */
1484
- export type Model = {
1655
+ export type Mcp = {
1485
1656
  /**
1486
- * The model identifier, which can be referenced in the API endpoints.
1657
+ * Unique instance identifier (UUID)
1487
1658
  */
1488
1659
  id: string;
1489
1660
  /**
1490
- * The object type, which is always "model".
1661
+ * Server info resolved via JOIN
1491
1662
  */
1492
- object: string;
1663
+ mcp_server: McpServerInfo;
1493
1664
  /**
1494
- * The Unix timestamp (in seconds) when the model was created.
1665
+ * User-defined slug for this instance
1495
1666
  */
1496
- created: number;
1667
+ slug: string;
1497
1668
  /**
1498
- * The organization that owns the model.
1669
+ * Human-readable name
1499
1670
  */
1500
- owned_by: string;
1671
+ name: string;
1672
+ /**
1673
+ * Optional description for this instance
1674
+ */
1675
+ description?: string | null;
1676
+ /**
1677
+ * Whether this instance is enabled
1678
+ */
1679
+ enabled: boolean;
1680
+ /**
1681
+ * Cached tool schemas from the MCP server (JSON array)
1682
+ */
1683
+ tools_cache?: Array<McpTool> | null;
1684
+ /**
1685
+ * Whitelisted tool names (empty = block all)
1686
+ */
1687
+ tools_filter?: Array<string> | null;
1688
+ auth_type: McpAuthType;
1689
+ /**
1690
+ * Reference to the auth config (mcp_auth_headers.id or mcp_oauth_configs.id)
1691
+ */
1692
+ auth_uuid?: string | null;
1693
+ /**
1694
+ * When this instance was created
1695
+ */
1696
+ created_at: string;
1697
+ /**
1698
+ * When this instance was last updated
1699
+ */
1700
+ updated_at: string;
1501
1701
  };
1502
1702
 
1503
- export type ModelAlias = {
1504
- alias: string;
1505
- repo: string;
1506
- filename: string;
1507
- snapshot: string;
1703
+ export type McpApproval = {
1704
+ url: string;
1705
+ status: ApprovalStatus;
1706
+ instance?: null | McpInstance;
1707
+ };
1708
+
1709
+ export type McpAuth = {
1710
+ type: 'public';
1711
+ } | {
1712
+ header_key: string;
1713
+ header_value: string;
1714
+ type: 'header';
1508
1715
  };
1509
1716
 
1510
1717
  /**
1511
- * Response for auto-discovered model aliases
1718
+ * Discriminated union response for any type of MCP auth config.
1719
+ * The JSON `"type"` field determines the variant: `"header"` or `"oauth"`.
1512
1720
  */
1513
- export type ModelAliasResponse = {
1514
- source: string;
1515
- alias: string;
1516
- repo: string;
1517
- filename: string;
1518
- snapshot: string;
1519
- metadata?: null | ModelMetadata;
1721
+ export type McpAuthConfigResponse = {
1722
+ id: string;
1723
+ name: string;
1724
+ mcp_server_id: string;
1725
+ header_key: string;
1726
+ has_header_value: boolean;
1727
+ created_by: string;
1728
+ created_at: string;
1729
+ updated_at: string;
1730
+ type: 'header';
1731
+ } | {
1732
+ id: string;
1733
+ name: string;
1734
+ mcp_server_id: string;
1735
+ registration_type: RegistrationType;
1736
+ client_id: string;
1737
+ authorization_endpoint: string;
1738
+ token_endpoint: string;
1739
+ registration_endpoint?: string | null;
1740
+ scopes?: string | null;
1741
+ client_id_issued_at?: number | null;
1742
+ token_endpoint_auth_method?: string | null;
1743
+ has_client_secret: boolean;
1744
+ has_registration_access_token: boolean;
1745
+ created_by: string;
1746
+ created_at: string;
1747
+ updated_at: string;
1748
+ type: 'oauth';
1520
1749
  };
1521
1750
 
1522
- export type ModelArchitecture = {
1523
- family?: string | null;
1524
- parameter_count?: number | null;
1525
- quantization?: string | null;
1526
- format: string;
1751
+ /**
1752
+ * List wrapper for unified auth config responses.
1753
+ */
1754
+ export type McpAuthConfigsListResponse = {
1755
+ auth_configs: Array<McpAuthConfigResponse>;
1527
1756
  };
1528
1757
 
1529
- export type ModelCapabilities = {
1530
- vision?: boolean | null;
1531
- audio?: boolean | null;
1532
- thinking?: boolean | null;
1533
- tools: ToolCapabilities;
1534
- };
1758
+ export type McpAuthType = 'public' | 'header' | 'oauth';
1535
1759
 
1536
- export type ModelDetails = {
1537
- parent_model?: string | null;
1538
- format: string;
1539
- family: string;
1540
- families?: Array<string> | null;
1541
- parameter_size: string;
1542
- quantization_level: string;
1760
+ export type McpExecuteRequest = {
1761
+ params: unknown;
1543
1762
  };
1544
1763
 
1545
- /**
1546
- * Model metadata for API responses
1547
- */
1548
- export type ModelMetadata = {
1549
- capabilities: ModelCapabilities;
1550
- context: ContextLimits;
1551
- architecture: ModelArchitecture;
1552
- chat_template?: string | null;
1764
+ export type McpExecuteResponse = {
1765
+ result?: unknown;
1766
+ error?: string | null;
1553
1767
  };
1554
1768
 
1555
- export type ModelsResponse = {
1556
- models: Array<OllamaModel>;
1769
+ export type McpInstance = {
1770
+ id: string;
1771
+ };
1772
+
1773
+ export type McpResponse = {
1774
+ id: string;
1775
+ mcp_server: McpServerInfo;
1776
+ slug: string;
1777
+ name: string;
1778
+ description?: string | null;
1779
+ enabled: boolean;
1780
+ tools_cache?: Array<McpTool> | null;
1781
+ tools_filter?: Array<string> | null;
1782
+ auth_type: McpAuthType;
1783
+ auth_uuid?: string | null;
1784
+ created_at: string;
1785
+ updated_at: string;
1786
+ };
1787
+
1788
+ /**
1789
+ * Admin-managed MCP server registry entry.
1790
+ * Admins/managers register MCP server URLs that users can then create instances of.
1791
+ */
1792
+ export type McpServer = {
1793
+ /**
1794
+ * Unique identifier (UUID)
1795
+ */
1796
+ id: string;
1797
+ /**
1798
+ * MCP server endpoint URL (trimmed, case-insensitive unique)
1799
+ */
1800
+ url: string;
1801
+ /**
1802
+ * Human-readable display name
1803
+ */
1804
+ name: string;
1805
+ /**
1806
+ * Optional description
1807
+ */
1808
+ description?: string | null;
1809
+ /**
1810
+ * Whether this MCP server is enabled
1811
+ */
1812
+ enabled: boolean;
1813
+ /**
1814
+ * User who created this entry
1815
+ */
1816
+ created_by: string;
1817
+ /**
1818
+ * User who last updated this entry
1819
+ */
1820
+ updated_by: string;
1821
+ /**
1822
+ * When this entry was created
1823
+ */
1824
+ created_at: string;
1825
+ /**
1826
+ * When this entry was last updated
1827
+ */
1828
+ updated_at: string;
1829
+ };
1830
+
1831
+ /**
1832
+ * Minimal MCP server info embedded in MCP instance responses.
1833
+ */
1834
+ export type McpServerInfo = {
1835
+ id: string;
1836
+ url: string;
1837
+ name: string;
1838
+ enabled: boolean;
1839
+ };
1840
+
1841
+ export type McpServerRequest = {
1842
+ url: string;
1843
+ };
1844
+
1845
+ export type McpServerResponse = {
1846
+ id: string;
1847
+ url: string;
1848
+ name: string;
1849
+ description?: string | null;
1850
+ enabled: boolean;
1851
+ created_by: string;
1852
+ updated_by: string;
1853
+ enabled_mcp_count: number;
1854
+ disabled_mcp_count: number;
1855
+ created_at: string;
1856
+ updated_at: string;
1857
+ auth_config?: null | McpAuthConfigResponse;
1858
+ };
1859
+
1860
+ export type McpServerReviewInfo = {
1861
+ /**
1862
+ * Requested MCP server URL
1863
+ */
1864
+ url: string;
1865
+ /**
1866
+ * User's MCP instances connected to this server URL
1867
+ */
1868
+ instances: Array<Mcp>;
1869
+ };
1870
+
1871
+ /**
1872
+ * Tool schema cached from an MCP server's tools/list response.
1873
+ */
1874
+ export type McpTool = {
1875
+ /**
1876
+ * Tool name as declared by the MCP server
1877
+ */
1878
+ name: string;
1879
+ /**
1880
+ * Human-readable description of the tool
1881
+ */
1882
+ description?: string | null;
1883
+ /**
1884
+ * JSON Schema for tool input parameters
1885
+ */
1886
+ input_schema?: unknown;
1887
+ };
1888
+
1889
+ export type McpToolsResponse = {
1890
+ tools: Array<McpTool>;
1891
+ };
1892
+
1893
+ export type Message = {
1894
+ role: string;
1895
+ content: string;
1896
+ images?: Array<string> | null;
1897
+ };
1898
+
1899
+ /**
1900
+ * Set of 16 key-value pairs that can be attached to an object.
1901
+ * This can be useful for storing additional information about the
1902
+ * object in a structured format, and querying for objects via API
1903
+ * or the dashboard. Keys are strings with a maximum length of 64
1904
+ * characters. Values are strings with a maximum length of 512
1905
+ * characters.
1906
+ */
1907
+ export type Metadata = unknown;
1908
+
1909
+ /**
1910
+ * Describes an OpenAI model offering that can be used with the API.
1911
+ */
1912
+ export type Model = {
1913
+ /**
1914
+ * The model identifier, which can be referenced in the API endpoints.
1915
+ */
1916
+ id: string;
1917
+ /**
1918
+ * The object type, which is always "model".
1919
+ */
1920
+ object: string;
1921
+ /**
1922
+ * The Unix timestamp (in seconds) when the model was created.
1923
+ */
1924
+ created: number;
1925
+ /**
1926
+ * The organization that owns the model.
1927
+ */
1928
+ owned_by: string;
1929
+ };
1930
+
1931
+ export type ModelAlias = {
1932
+ alias: string;
1933
+ repo: string;
1934
+ filename: string;
1935
+ snapshot: string;
1936
+ };
1937
+
1938
+ /**
1939
+ * Response for auto-discovered model aliases
1940
+ */
1941
+ export type ModelAliasResponse = {
1942
+ source: string;
1943
+ alias: string;
1944
+ repo: string;
1945
+ filename: string;
1946
+ snapshot: string;
1947
+ metadata?: null | ModelMetadata;
1948
+ };
1949
+
1950
+ export type ModelArchitecture = {
1951
+ family?: string | null;
1952
+ parameter_count?: number | null;
1953
+ quantization?: string | null;
1954
+ format: string;
1955
+ };
1956
+
1957
+ export type ModelCapabilities = {
1958
+ vision?: boolean | null;
1959
+ audio?: boolean | null;
1960
+ thinking?: boolean | null;
1961
+ tools: ToolCapabilities;
1962
+ };
1963
+
1964
+ export type ModelDetails = {
1965
+ parent_model?: string | null;
1966
+ format: string;
1967
+ family: string;
1968
+ families?: Array<string> | null;
1969
+ parameter_size: string;
1970
+ quantization_level: string;
1971
+ };
1972
+
1973
+ /**
1974
+ * Model metadata for API responses
1975
+ */
1976
+ export type ModelMetadata = {
1977
+ capabilities: ModelCapabilities;
1978
+ context: ContextLimits;
1979
+ architecture: ModelArchitecture;
1980
+ chat_template?: string | null;
1981
+ };
1982
+
1983
+ export type ModelsResponse = {
1984
+ models: Array<OllamaModel>;
1557
1985
  };
1558
1986
 
1559
1987
  /**
@@ -1581,6 +2009,55 @@ export type OaiRequestParams = {
1581
2009
  user?: string | null;
1582
2010
  };
1583
2011
 
2012
+ export type OAuthDiscoverAsRequest = {
2013
+ url: string;
2014
+ };
2015
+
2016
+ export type OAuthDiscoverAsResponse = {
2017
+ authorization_endpoint: string;
2018
+ token_endpoint: string;
2019
+ scopes_supported?: Array<string> | null;
2020
+ };
2021
+
2022
+ export type OAuthDiscoverMcpRequest = {
2023
+ mcp_server_url: string;
2024
+ };
2025
+
2026
+ export type OAuthDiscoverMcpResponse = {
2027
+ authorization_endpoint?: string | null;
2028
+ token_endpoint?: string | null;
2029
+ registration_endpoint?: string | null;
2030
+ scopes_supported?: Array<string> | null;
2031
+ resource?: string | null;
2032
+ authorization_server_url?: string | null;
2033
+ };
2034
+
2035
+ export type OAuthLoginRequest = {
2036
+ redirect_uri: string;
2037
+ };
2038
+
2039
+ export type OAuthLoginResponse = {
2040
+ authorization_url: string;
2041
+ };
2042
+
2043
+ export type OAuthTokenExchangeRequest = {
2044
+ code: string;
2045
+ redirect_uri: string;
2046
+ state: string;
2047
+ };
2048
+
2049
+ export type OAuthTokenResponse = {
2050
+ id: string;
2051
+ mcp_oauth_config_id: string;
2052
+ scopes_granted?: string | null;
2053
+ expires_at?: number | null;
2054
+ has_access_token: boolean;
2055
+ has_refresh_token: boolean;
2056
+ created_by: string;
2057
+ created_at: string;
2058
+ updated_at: string;
2059
+ };
2060
+
1584
2061
  export type OllamaError = {
1585
2062
  error: string;
1586
2063
  };
@@ -1822,6 +2299,16 @@ export type RefreshResponse = {
1822
2299
  */
1823
2300
  export type RefreshSource = 'all' | 'model';
1824
2301
 
2302
+ /**
2303
+ * OAuth 2.1 registration type: pre-registered client or dynamic client registration (DCR).
2304
+ */
2305
+ export type RegistrationType = 'pre_registered' | 'dynamic_registration';
2306
+
2307
+ export type RequestedResources = {
2308
+ toolset_types?: Array<ToolsetTypeRequest>;
2309
+ mcp_servers?: Array<McpServerRequest>;
2310
+ };
2311
+
1825
2312
  export type ResourceRole = 'resource_user' | 'resource_power_user' | 'resource_manager' | 'resource_admin';
1826
2313
 
1827
2314
  export type ResponseFormat = {
@@ -1892,7 +2379,7 @@ export type SettingMetadata = {
1892
2379
  type: 'option';
1893
2380
  };
1894
2381
 
1895
- export type SettingSource = 'system' | 'command_line' | 'environment' | 'settings_file' | 'default';
2382
+ export type SettingSource = 'system' | 'command_line' | 'environment' | 'database' | 'settings_file' | 'default';
1896
2383
 
1897
2384
  /**
1898
2385
  * Request to setup the application in authenticated mode
@@ -1989,7 +2476,7 @@ export type TokenInfo = {
1989
2476
  role: TokenScope;
1990
2477
  };
1991
2478
 
1992
- export type TokenScope = 'scope_token_user' | 'scope_token_power_user' | 'scope_token_manager' | 'scope_token_admin';
2479
+ export type TokenScope = 'scope_token_user' | 'scope_token_power_user';
1993
2480
 
1994
2481
  export type TokenStatus = 'active' | 'inactive';
1995
2482
 
@@ -2017,6 +2504,25 @@ export type ToolDefinition = {
2017
2504
  function: FunctionDefinition;
2018
2505
  };
2019
2506
 
2507
+ export type ToolTypeReviewInfo = {
2508
+ /**
2509
+ * Tool type identifier
2510
+ */
2511
+ toolset_type: string;
2512
+ /**
2513
+ * Tool type display name
2514
+ */
2515
+ name: string;
2516
+ /**
2517
+ * Tool type description
2518
+ */
2519
+ description: string;
2520
+ /**
2521
+ * User's configured instances of this tool type
2522
+ */
2523
+ instances: Array<Toolset>;
2524
+ };
2525
+
2020
2526
  /**
2021
2527
  * User-owned toolset instance with UUID identification
2022
2528
  */
@@ -2026,17 +2532,13 @@ export type Toolset = {
2026
2532
  */
2027
2533
  id: string;
2028
2534
  /**
2029
- * User-defined name for this instance
2030
- */
2031
- name: string;
2032
- /**
2033
- * Keycloak client scope UUID (environment-specific, stored in DB)
2535
+ * User-defined slug for this instance
2034
2536
  */
2035
- scope_uuid: string;
2537
+ slug: string;
2036
2538
  /**
2037
- * OAuth scope string (e.g., "scope_toolset-builtin-exa-web-search", derived from registry)
2539
+ * Toolset type identifier (e.g., "builtin-exa-search")
2038
2540
  */
2039
- scope: string;
2541
+ toolset_type: string;
2040
2542
  /**
2041
2543
  * Optional description for this instance
2042
2544
  */
@@ -2059,6 +2561,35 @@ export type Toolset = {
2059
2561
  updated_at: string;
2060
2562
  };
2061
2563
 
2564
+ export type ToolsetApproval = {
2565
+ toolset_type: string;
2566
+ status: ApprovalStatus;
2567
+ instance?: null | ToolsetInstance;
2568
+ };
2569
+
2570
+ /**
2571
+ * A toolset is a connector that provides one or more tools.
2572
+ * Example: Exa Web Search toolset provides search, find_similar, get_contents, answer tools.
2573
+ */
2574
+ export type ToolsetDefinition = {
2575
+ /**
2576
+ * Toolset type identifier (e.g., "builtin-exa-search")
2577
+ */
2578
+ toolset_type: string;
2579
+ /**
2580
+ * Human-readable name (e.g., "Exa Web Search")
2581
+ */
2582
+ name: string;
2583
+ /**
2584
+ * Description of the toolset
2585
+ */
2586
+ description: string;
2587
+ /**
2588
+ * Tools provided by this toolset (in OpenAI format)
2589
+ */
2590
+ tools: Array<ToolDefinition>;
2591
+ };
2592
+
2062
2593
  /**
2063
2594
  * Response from toolset tool execution (to send back to LLM)
2064
2595
  */
@@ -2073,6 +2604,10 @@ export type ToolsetExecutionResponse = {
2073
2604
  error?: string | null;
2074
2605
  };
2075
2606
 
2607
+ export type ToolsetInstance = {
2608
+ id: string;
2609
+ };
2610
+
2076
2611
  /**
2077
2612
  * Toolset response
2078
2613
  */
@@ -2082,17 +2617,13 @@ export type ToolsetResponse = {
2082
2617
  */
2083
2618
  id: string;
2084
2619
  /**
2085
- * User-defined name for this toolset
2620
+ * User-defined slug for this toolset
2086
2621
  */
2087
- name: string;
2088
- /**
2089
- * Toolset scope UUID identifier
2090
- */
2091
- scope_uuid: string;
2622
+ slug: string;
2092
2623
  /**
2093
- * Toolset scope identifier (e.g., "scope_toolset-builtin-exa-web-search")
2624
+ * Toolset type identifier (e.g., "builtin-exa-search")
2094
2625
  */
2095
- scope: string;
2626
+ toolset_type: string;
2096
2627
  /**
2097
2628
  * Optional description for this toolset
2098
2629
  */
@@ -2119,77 +2650,21 @@ export type ToolsetResponse = {
2119
2650
  updated_at: string;
2120
2651
  };
2121
2652
 
2122
- /**
2123
- * Toolset type response (for admin listing)
2124
- */
2125
- export type ToolsetTypeResponse = {
2126
- /**
2127
- * Toolset scope UUID identifier
2128
- */
2129
- scope_uuid: string;
2653
+ export type ToolsetTypeRequest = {
2654
+ toolset_type: string;
2655
+ };
2656
+
2657
+ export type TopLogprobs = {
2130
2658
  /**
2131
- * Toolset scope identifier (e.g., "scope_toolset-builtin-exa-web-search")
2659
+ * The token.
2132
2660
  */
2133
- scope: string;
2661
+ token: string;
2134
2662
  /**
2135
- * Human-readable name (e.g., "Exa Web Search")
2663
+ * The log probability of this token.
2136
2664
  */
2137
- name: string;
2665
+ logprob: number;
2138
2666
  /**
2139
- * Description of the toolset
2140
- */
2141
- description: string;
2142
- /**
2143
- * Whether the toolset is enabled at app level (admin-controlled)
2144
- */
2145
- app_enabled: boolean;
2146
- /**
2147
- * Tools provided by this toolset
2148
- */
2149
- tools: Array<ToolDefinition>;
2150
- };
2151
-
2152
- /**
2153
- * Toolset with app-level configuration status (API response model)
2154
- */
2155
- export type ToolsetWithTools = {
2156
- /**
2157
- * Keycloak client scope UUID (environment-specific)
2158
- */
2159
- scope_uuid: string;
2160
- /**
2161
- * OAuth scope string (e.g., "scope_toolset-builtin-exa-web-search")
2162
- */
2163
- scope: string;
2164
- /**
2165
- * Human-readable name (e.g., "Exa Web Search")
2166
- */
2167
- name: string;
2168
- /**
2169
- * Description of the toolset
2170
- */
2171
- description: string;
2172
- /**
2173
- * Whether the toolset is enabled at app level (admin-controlled)
2174
- */
2175
- app_enabled: boolean;
2176
- /**
2177
- * Tools provided by this toolset
2178
- */
2179
- tools: Array<ToolDefinition>;
2180
- };
2181
-
2182
- export type TopLogprobs = {
2183
- /**
2184
- * The token.
2185
- */
2186
- token: string;
2187
- /**
2188
- * The log probability of this token.
2189
- */
2190
- logprob: number;
2191
- /**
2192
- * A list of integers representing the UTF-8 bytes representation of the token. Useful in instances where characters are represented by multiple tokens and their byte representations must be combined to generate the correct text representation. Can be `null` if there is no bytes representation for the token.
2667
+ * A list of integers representing the UTF-8 bytes representation of the token. Useful in instances where characters are represented by multiple tokens and their byte representations must be combined to generate the correct text representation. Can be `null` if there is no bytes representation for the token.
2193
2668
  */
2194
2669
  bytes?: Array<number> | null;
2195
2670
  };
@@ -2246,6 +2721,24 @@ export type UpdateApiTokenRequest = {
2246
2721
  status: TokenStatus;
2247
2722
  };
2248
2723
 
2724
+ export type UpdateMcpRequest = {
2725
+ name: string;
2726
+ slug: string;
2727
+ description?: string | null;
2728
+ enabled: boolean;
2729
+ tools_filter?: Array<string> | null;
2730
+ tools_cache?: Array<McpTool> | null;
2731
+ auth_type?: null | McpAuthType;
2732
+ auth_uuid?: string | null;
2733
+ };
2734
+
2735
+ export type UpdateMcpServerRequest = {
2736
+ url: string;
2737
+ name: string;
2738
+ description?: string | null;
2739
+ enabled: boolean;
2740
+ };
2741
+
2249
2742
  /**
2250
2743
  * Request to update a setting value
2251
2744
  */
@@ -2261,9 +2754,9 @@ export type UpdateSettingRequest = {
2261
2754
  */
2262
2755
  export type UpdateToolsetRequest = {
2263
2756
  /**
2264
- * User-defined name for this toolset
2757
+ * User-defined slug for this toolset
2265
2758
  */
2266
- name: string;
2759
+ slug: string;
2267
2760
  /**
2268
2761
  * Optional description for this toolset
2269
2762
  */
@@ -2298,30 +2791,12 @@ export type UrlCitation = {
2298
2791
  };
2299
2792
 
2300
2793
  export type UserAccessRequest = {
2301
- /**
2302
- * Unique identifier for the request
2303
- */
2304
- id: number;
2305
- /**
2306
- * Username of the requesting user
2307
- */
2794
+ id: string;
2308
2795
  username: string;
2309
- /**
2310
- * User ID (UUID) of the requesting user
2311
- */
2312
2796
  user_id: string;
2313
2797
  reviewer?: string | null;
2314
- /**
2315
- * Current status of the request
2316
- */
2317
2798
  status: UserAccessRequestStatus;
2318
- /**
2319
- * Creation timestamp
2320
- */
2321
2799
  created_at: string;
2322
- /**
2323
- * Last update timestamp
2324
- */
2325
2800
  updated_at: string;
2326
2801
  };
2327
2802
 
@@ -2350,15 +2825,19 @@ export type UserAccessStatusResponse = {
2350
2825
  };
2351
2826
 
2352
2827
  export type UserAlias = {
2828
+ id: string;
2353
2829
  alias: string;
2354
2830
  repo: string;
2355
2831
  filename: string;
2356
2832
  snapshot: string;
2357
2833
  request_params?: OaiRequestParams;
2358
- context_params?: Array<string>;
2834
+ context_params?: JsonVec;
2835
+ created_at: string;
2836
+ updated_at: string;
2359
2837
  };
2360
2838
 
2361
2839
  export type UserAliasResponse = {
2840
+ id: string;
2362
2841
  alias: string;
2363
2842
  repo: string;
2364
2843
  filename: string;
@@ -2367,6 +2846,8 @@ export type UserAliasResponse = {
2367
2846
  model_params: {};
2368
2847
  request_params: OaiRequestParams;
2369
2848
  context_params: Array<string>;
2849
+ created_at: string;
2850
+ updated_at: string;
2370
2851
  metadata?: null | ModelMetadata;
2371
2852
  };
2372
2853
 
@@ -2400,7 +2881,7 @@ export type UserResponse = {
2400
2881
  auth_status: 'api_token';
2401
2882
  });
2402
2883
 
2403
- export type UserScope = 'scope_user_user' | 'scope_user_power_user' | 'scope_user_manager' | 'scope_user_admin';
2884
+ export type UserScope = 'scope_user_user' | 'scope_user_power_user';
2404
2885
 
2405
2886
  /**
2406
2887
  * 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`.
@@ -2689,7 +3170,7 @@ export type ApproveAccessRequestData = {
2689
3170
  /**
2690
3171
  * Access request ID
2691
3172
  */
2692
- id: number;
3173
+ id: string;
2693
3174
  };
2694
3175
  query?: never;
2695
3176
  url: '/bodhi/v1/access-requests/{id}/approve';
@@ -2727,13 +3208,116 @@ export type ApproveAccessRequestResponses = {
2727
3208
  200: unknown;
2728
3209
  };
2729
3210
 
3211
+ export type ApproveAppsAccessRequestData = {
3212
+ /**
3213
+ * Approval details with tool selections
3214
+ */
3215
+ body: ApproveAccessRequestBody;
3216
+ path: {
3217
+ /**
3218
+ * Access request ID
3219
+ */
3220
+ id: string;
3221
+ };
3222
+ query?: never;
3223
+ url: '/bodhi/v1/access-requests/{id}/approve';
3224
+ };
3225
+
3226
+ export type ApproveAppsAccessRequestErrors = {
3227
+ /**
3228
+ * Invalid request parameters
3229
+ */
3230
+ 400: OpenAiApiError;
3231
+ /**
3232
+ * Not authenticated
3233
+ */
3234
+ 401: OpenAiApiError;
3235
+ /**
3236
+ * Insufficient permissions
3237
+ */
3238
+ 403: OpenAiApiError;
3239
+ /**
3240
+ * Not found
3241
+ */
3242
+ 404: OpenAiApiError;
3243
+ /**
3244
+ * Already processed
3245
+ */
3246
+ 409: OpenAiApiError;
3247
+ /**
3248
+ * Internal server error
3249
+ */
3250
+ 500: OpenAiApiError;
3251
+ };
3252
+
3253
+ export type ApproveAppsAccessRequestError = ApproveAppsAccessRequestErrors[keyof ApproveAppsAccessRequestErrors];
3254
+
3255
+ export type ApproveAppsAccessRequestResponses = {
3256
+ /**
3257
+ * Request approved
3258
+ */
3259
+ 200: AccessRequestActionResponse;
3260
+ };
3261
+
3262
+ export type ApproveAppsAccessRequestResponse = ApproveAppsAccessRequestResponses[keyof ApproveAppsAccessRequestResponses];
3263
+
3264
+ export type DenyAccessRequestData = {
3265
+ body?: never;
3266
+ path: {
3267
+ /**
3268
+ * Access request ID
3269
+ */
3270
+ id: string;
3271
+ };
3272
+ query?: never;
3273
+ url: '/bodhi/v1/access-requests/{id}/deny';
3274
+ };
3275
+
3276
+ export type DenyAccessRequestErrors = {
3277
+ /**
3278
+ * Invalid request parameters
3279
+ */
3280
+ 400: OpenAiApiError;
3281
+ /**
3282
+ * Not authenticated
3283
+ */
3284
+ 401: OpenAiApiError;
3285
+ /**
3286
+ * Insufficient permissions
3287
+ */
3288
+ 403: OpenAiApiError;
3289
+ /**
3290
+ * Not found
3291
+ */
3292
+ 404: OpenAiApiError;
3293
+ /**
3294
+ * Already processed
3295
+ */
3296
+ 409: OpenAiApiError;
3297
+ /**
3298
+ * Internal server error
3299
+ */
3300
+ 500: OpenAiApiError;
3301
+ };
3302
+
3303
+ export type DenyAccessRequestError = DenyAccessRequestErrors[keyof DenyAccessRequestErrors];
3304
+
3305
+ export type DenyAccessRequestResponses = {
3306
+ /**
3307
+ * Request denied
3308
+ */
3309
+ 200: AccessRequestActionResponse;
3310
+ };
3311
+
3312
+ export type DenyAccessRequestResponse = DenyAccessRequestResponses[keyof DenyAccessRequestResponses];
3313
+
2730
3314
  export type RejectAccessRequestData = {
2731
3315
  body?: never;
2732
3316
  path: {
2733
3317
  /**
2734
3318
  * Access request ID
2735
3319
  */
2736
- id: number;
3320
+ id: string;
2737
3321
  };
2738
3322
  query?: never;
2739
3323
  url: '/bodhi/v1/access-requests/{id}/reject';
@@ -2771,6 +3355,56 @@ export type RejectAccessRequestResponses = {
2771
3355
  200: unknown;
2772
3356
  };
2773
3357
 
3358
+ export type GetAccessRequestReviewData = {
3359
+ body?: never;
3360
+ path: {
3361
+ /**
3362
+ * Access request ID
3363
+ */
3364
+ id: string;
3365
+ };
3366
+ query?: never;
3367
+ url: '/bodhi/v1/access-requests/{id}/review';
3368
+ };
3369
+
3370
+ export type GetAccessRequestReviewErrors = {
3371
+ /**
3372
+ * Invalid request parameters
3373
+ */
3374
+ 400: OpenAiApiError;
3375
+ /**
3376
+ * Not authenticated
3377
+ */
3378
+ 401: OpenAiApiError;
3379
+ /**
3380
+ * Insufficient permissions
3381
+ */
3382
+ 403: OpenAiApiError;
3383
+ /**
3384
+ * Not found
3385
+ */
3386
+ 404: OpenAiApiError;
3387
+ /**
3388
+ * Request expired
3389
+ */
3390
+ 410: OpenAiApiError;
3391
+ /**
3392
+ * Internal server error
3393
+ */
3394
+ 500: OpenAiApiError;
3395
+ };
3396
+
3397
+ export type GetAccessRequestReviewError = GetAccessRequestReviewErrors[keyof GetAccessRequestReviewErrors];
3398
+
3399
+ export type GetAccessRequestReviewResponses = {
3400
+ /**
3401
+ * Review data retrieved
3402
+ */
3403
+ 200: AccessRequestReviewResponse;
3404
+ };
3405
+
3406
+ export type GetAccessRequestReviewResponse = GetAccessRequestReviewResponses[keyof GetAccessRequestReviewResponses];
3407
+
2774
3408
  export type ListApiModelsData = {
2775
3409
  body?: never;
2776
3410
  path?: never;
@@ -3058,30 +3692,1029 @@ export type GetApiModelErrors = {
3058
3692
  500: OpenAiApiError;
3059
3693
  };
3060
3694
 
3061
- export type GetApiModelError = GetApiModelErrors[keyof GetApiModelErrors];
3695
+ export type GetApiModelError = GetApiModelErrors[keyof GetApiModelErrors];
3696
+
3697
+ export type GetApiModelResponses = {
3698
+ /**
3699
+ * API model configuration retrieved successfully
3700
+ */
3701
+ 200: ApiModelResponse;
3702
+ };
3703
+
3704
+ export type GetApiModelResponse = GetApiModelResponses[keyof GetApiModelResponses];
3705
+
3706
+ export type UpdateApiModelData = {
3707
+ body: UpdateApiModelRequest;
3708
+ path: {
3709
+ /**
3710
+ * API model ID
3711
+ */
3712
+ id: string;
3713
+ };
3714
+ query?: never;
3715
+ url: '/bodhi/v1/api-models/{id}';
3716
+ };
3717
+
3718
+ export type UpdateApiModelErrors = {
3719
+ /**
3720
+ * Invalid request parameters
3721
+ */
3722
+ 400: OpenAiApiError;
3723
+ /**
3724
+ * Not authenticated
3725
+ */
3726
+ 401: OpenAiApiError;
3727
+ /**
3728
+ * Insufficient permissions
3729
+ */
3730
+ 403: OpenAiApiError;
3731
+ /**
3732
+ * API model not found
3733
+ */
3734
+ 404: OpenAiApiError;
3735
+ /**
3736
+ * Internal server error
3737
+ */
3738
+ 500: OpenAiApiError;
3739
+ };
3740
+
3741
+ export type UpdateApiModelError = UpdateApiModelErrors[keyof UpdateApiModelErrors];
3742
+
3743
+ export type UpdateApiModelResponses = {
3744
+ /**
3745
+ * API model updated
3746
+ */
3747
+ 200: ApiModelResponse;
3748
+ };
3749
+
3750
+ export type UpdateApiModelResponse = UpdateApiModelResponses[keyof UpdateApiModelResponses];
3751
+
3752
+ export type SyncModelsData = {
3753
+ body?: never;
3754
+ path: {
3755
+ /**
3756
+ * Unique identifier for the API model alias
3757
+ */
3758
+ id: string;
3759
+ };
3760
+ query?: never;
3761
+ url: '/bodhi/v1/api-models/{id}/sync-models';
3762
+ };
3763
+
3764
+ export type SyncModelsErrors = {
3765
+ /**
3766
+ * Invalid request parameters
3767
+ */
3768
+ 400: OpenAiApiError;
3769
+ /**
3770
+ * Not authenticated
3771
+ */
3772
+ 401: OpenAiApiError;
3773
+ /**
3774
+ * Insufficient permissions
3775
+ */
3776
+ 403: OpenAiApiError;
3777
+ /**
3778
+ * API model not found
3779
+ */
3780
+ 404: unknown;
3781
+ /**
3782
+ * Internal server error
3783
+ */
3784
+ 500: OpenAiApiError;
3785
+ };
3786
+
3787
+ export type SyncModelsError = SyncModelsErrors[keyof SyncModelsErrors];
3788
+
3789
+ export type SyncModelsResponses = {
3790
+ /**
3791
+ * Models synced to cache successfully
3792
+ */
3793
+ 200: ApiModelResponse;
3794
+ };
3795
+
3796
+ export type SyncModelsResponse = SyncModelsResponses[keyof SyncModelsResponses];
3797
+
3798
+ export type GetAccessRequestStatusData = {
3799
+ body?: never;
3800
+ path: {
3801
+ /**
3802
+ * Access request ID
3803
+ */
3804
+ id: string;
3805
+ };
3806
+ query: {
3807
+ /**
3808
+ * App client ID for verification
3809
+ */
3810
+ app_client_id: string;
3811
+ };
3812
+ url: '/bodhi/v1/apps/access-requests/{id}';
3813
+ };
3814
+
3815
+ export type GetAccessRequestStatusErrors = {
3816
+ /**
3817
+ * Invalid request parameters
3818
+ */
3819
+ 400: OpenAiApiError;
3820
+ /**
3821
+ * Not authenticated
3822
+ */
3823
+ 401: OpenAiApiError;
3824
+ /**
3825
+ * Insufficient permissions
3826
+ */
3827
+ 403: OpenAiApiError;
3828
+ /**
3829
+ * Not found or app_client_id mismatch
3830
+ */
3831
+ 404: OpenAiApiError;
3832
+ /**
3833
+ * Internal server error
3834
+ */
3835
+ 500: OpenAiApiError;
3836
+ };
3837
+
3838
+ export type GetAccessRequestStatusError = GetAccessRequestStatusErrors[keyof GetAccessRequestStatusErrors];
3839
+
3840
+ export type GetAccessRequestStatusResponses = {
3841
+ /**
3842
+ * Status retrieved
3843
+ */
3844
+ 200: AccessRequestStatusResponse;
3845
+ };
3846
+
3847
+ export type GetAccessRequestStatusResponse = GetAccessRequestStatusResponses[keyof GetAccessRequestStatusResponses];
3848
+
3849
+ export type CreateAccessRequestData = {
3850
+ /**
3851
+ * Access request details
3852
+ */
3853
+ body: CreateAccessRequestBody;
3854
+ path?: never;
3855
+ query?: never;
3856
+ url: '/bodhi/v1/apps/request-access';
3857
+ };
3858
+
3859
+ export type CreateAccessRequestErrors = {
3860
+ /**
3861
+ * Invalid request parameters
3862
+ */
3863
+ 400: OpenAiApiError;
3864
+ /**
3865
+ * Not authenticated
3866
+ */
3867
+ 401: OpenAiApiError;
3868
+ /**
3869
+ * Insufficient permissions
3870
+ */
3871
+ 403: OpenAiApiError;
3872
+ /**
3873
+ * App client not found
3874
+ */
3875
+ 404: OpenAiApiError;
3876
+ /**
3877
+ * Internal server error
3878
+ */
3879
+ 500: OpenAiApiError;
3880
+ };
3881
+
3882
+ export type CreateAccessRequestError = CreateAccessRequestErrors[keyof CreateAccessRequestErrors];
3883
+
3884
+ export type CreateAccessRequestResponses = {
3885
+ /**
3886
+ * Access request created
3887
+ */
3888
+ 201: CreateAccessRequestResponse;
3889
+ };
3890
+
3891
+ export type CreateAccessRequestResponse2 = CreateAccessRequestResponses[keyof CreateAccessRequestResponses];
3892
+
3893
+ export type CompleteOAuthFlowData = {
3894
+ /**
3895
+ * OAuth callback parameters from authorization server
3896
+ */
3897
+ body: AuthCallbackRequest;
3898
+ path?: never;
3899
+ query?: never;
3900
+ url: '/bodhi/v1/auth/callback';
3901
+ };
3902
+
3903
+ export type CompleteOAuthFlowErrors = {
3904
+ /**
3905
+ * Invalid request parameters
3906
+ */
3907
+ 400: OpenAiApiError;
3908
+ /**
3909
+ * Not authenticated
3910
+ */
3911
+ 401: OpenAiApiError;
3912
+ /**
3913
+ * Insufficient permissions
3914
+ */
3915
+ 403: OpenAiApiError;
3916
+ /**
3917
+ * OAuth error, invalid request parameters, or state mismatch
3918
+ */
3919
+ 422: OpenAiApiError;
3920
+ /**
3921
+ * Internal server error
3922
+ */
3923
+ 500: OpenAiApiError;
3924
+ };
3925
+
3926
+ export type CompleteOAuthFlowError = CompleteOAuthFlowErrors[keyof CompleteOAuthFlowErrors];
3927
+
3928
+ export type CompleteOAuthFlowResponses = {
3929
+ /**
3930
+ * OAuth flow completed successfully, user authenticated
3931
+ */
3932
+ 200: RedirectResponse;
3933
+ };
3934
+
3935
+ export type CompleteOAuthFlowResponse = CompleteOAuthFlowResponses[keyof CompleteOAuthFlowResponses];
3936
+
3937
+ export type InitiateOAuthFlowData = {
3938
+ body: unknown;
3939
+ path?: never;
3940
+ query?: never;
3941
+ url: '/bodhi/v1/auth/initiate';
3942
+ };
3943
+
3944
+ export type InitiateOAuthFlowErrors = {
3945
+ /**
3946
+ * Invalid request parameters
3947
+ */
3948
+ 400: OpenAiApiError;
3949
+ /**
3950
+ * Not authenticated
3951
+ */
3952
+ 401: OpenAiApiError;
3953
+ /**
3954
+ * Insufficient permissions
3955
+ */
3956
+ 403: OpenAiApiError;
3957
+ /**
3958
+ * Internal server error
3959
+ */
3960
+ 500: OpenAiApiError;
3961
+ };
3962
+
3963
+ export type InitiateOAuthFlowError = InitiateOAuthFlowErrors[keyof InitiateOAuthFlowErrors];
3964
+
3965
+ export type InitiateOAuthFlowResponses = {
3966
+ /**
3967
+ * User already authenticated, home page URL provided
3968
+ */
3969
+ 200: RedirectResponse;
3970
+ /**
3971
+ * User not authenticated, OAuth authorization URL provided
3972
+ */
3973
+ 201: RedirectResponse;
3974
+ };
3975
+
3976
+ export type InitiateOAuthFlowResponse = InitiateOAuthFlowResponses[keyof InitiateOAuthFlowResponses];
3977
+
3978
+ export type GetAppInfoData = {
3979
+ body?: never;
3980
+ path?: never;
3981
+ query?: never;
3982
+ url: '/bodhi/v1/info';
3983
+ };
3984
+
3985
+ export type GetAppInfoErrors = {
3986
+ /**
3987
+ * Invalid request parameters
3988
+ */
3989
+ 400: OpenAiApiError;
3990
+ /**
3991
+ * Internal server error
3992
+ */
3993
+ 500: OpenAiApiError;
3994
+ };
3995
+
3996
+ export type GetAppInfoError = GetAppInfoErrors[keyof GetAppInfoErrors];
3997
+
3998
+ export type GetAppInfoResponses = {
3999
+ /**
4000
+ * Application information retrieved successfully
4001
+ */
4002
+ 200: AppInfo;
4003
+ };
4004
+
4005
+ export type GetAppInfoResponse = GetAppInfoResponses[keyof GetAppInfoResponses];
4006
+
4007
+ export type LogoutUserData = {
4008
+ body?: never;
4009
+ path?: never;
4010
+ query?: never;
4011
+ url: '/bodhi/v1/logout';
4012
+ };
4013
+
4014
+ export type LogoutUserErrors = {
4015
+ /**
4016
+ * Invalid request parameters
4017
+ */
4018
+ 400: OpenAiApiError;
4019
+ /**
4020
+ * Not authenticated
4021
+ */
4022
+ 401: OpenAiApiError;
4023
+ /**
4024
+ * Insufficient permissions
4025
+ */
4026
+ 403: OpenAiApiError;
4027
+ /**
4028
+ * Internal server error
4029
+ */
4030
+ 500: OpenAiApiError;
4031
+ };
4032
+
4033
+ export type LogoutUserError = LogoutUserErrors[keyof LogoutUserErrors];
4034
+
4035
+ export type LogoutUserResponses = {
4036
+ /**
4037
+ * User logged out successfully
4038
+ */
4039
+ 200: RedirectResponse;
4040
+ };
4041
+
4042
+ export type LogoutUserResponse = LogoutUserResponses[keyof LogoutUserResponses];
4043
+
4044
+ export type ListMcpsData = {
4045
+ body?: never;
4046
+ path?: never;
4047
+ query?: never;
4048
+ url: '/bodhi/v1/mcps';
4049
+ };
4050
+
4051
+ export type ListMcpsErrors = {
4052
+ /**
4053
+ * Invalid request parameters
4054
+ */
4055
+ 400: OpenAiApiError;
4056
+ /**
4057
+ * Not authenticated
4058
+ */
4059
+ 401: OpenAiApiError;
4060
+ /**
4061
+ * Insufficient permissions
4062
+ */
4063
+ 403: OpenAiApiError;
4064
+ /**
4065
+ * Internal server error
4066
+ */
4067
+ 500: OpenAiApiError;
4068
+ };
4069
+
4070
+ export type ListMcpsError = ListMcpsErrors[keyof ListMcpsErrors];
4071
+
4072
+ export type ListMcpsResponses = {
4073
+ /**
4074
+ * List of user's MCP instances
4075
+ */
4076
+ 200: ListMcpsResponse;
4077
+ };
4078
+
4079
+ export type ListMcpsResponse2 = ListMcpsResponses[keyof ListMcpsResponses];
4080
+
4081
+ export type CreateMcpData = {
4082
+ body: CreateMcpRequest;
4083
+ path?: never;
4084
+ query?: never;
4085
+ url: '/bodhi/v1/mcps';
4086
+ };
4087
+
4088
+ export type CreateMcpErrors = {
4089
+ /**
4090
+ * Invalid request parameters
4091
+ */
4092
+ 400: OpenAiApiError;
4093
+ /**
4094
+ * Not authenticated
4095
+ */
4096
+ 401: OpenAiApiError;
4097
+ /**
4098
+ * Insufficient permissions
4099
+ */
4100
+ 403: OpenAiApiError;
4101
+ /**
4102
+ * Internal server error
4103
+ */
4104
+ 500: OpenAiApiError;
4105
+ };
4106
+
4107
+ export type CreateMcpError = CreateMcpErrors[keyof CreateMcpErrors];
4108
+
4109
+ export type CreateMcpResponses = {
4110
+ /**
4111
+ * MCP created
4112
+ */
4113
+ 201: McpResponse;
4114
+ };
4115
+
4116
+ export type CreateMcpResponse = CreateMcpResponses[keyof CreateMcpResponses];
4117
+
4118
+ export type ListMcpAuthConfigsData = {
4119
+ body?: never;
4120
+ path?: never;
4121
+ query: {
4122
+ mcp_server_id: string;
4123
+ };
4124
+ url: '/bodhi/v1/mcps/auth-configs';
4125
+ };
4126
+
4127
+ export type ListMcpAuthConfigsErrors = {
4128
+ /**
4129
+ * Invalid request parameters
4130
+ */
4131
+ 400: OpenAiApiError;
4132
+ /**
4133
+ * Not authenticated
4134
+ */
4135
+ 401: OpenAiApiError;
4136
+ /**
4137
+ * Insufficient permissions
4138
+ */
4139
+ 403: OpenAiApiError;
4140
+ /**
4141
+ * Internal server error
4142
+ */
4143
+ 500: OpenAiApiError;
4144
+ };
4145
+
4146
+ export type ListMcpAuthConfigsError = ListMcpAuthConfigsErrors[keyof ListMcpAuthConfigsErrors];
4147
+
4148
+ export type ListMcpAuthConfigsResponses = {
4149
+ /**
4150
+ * List of auth configs
4151
+ */
4152
+ 200: McpAuthConfigsListResponse;
4153
+ };
4154
+
4155
+ export type ListMcpAuthConfigsResponse = ListMcpAuthConfigsResponses[keyof ListMcpAuthConfigsResponses];
4156
+
4157
+ export type CreateMcpAuthConfigData = {
4158
+ body: CreateAuthConfigBody;
4159
+ path?: never;
4160
+ query?: never;
4161
+ url: '/bodhi/v1/mcps/auth-configs';
4162
+ };
4163
+
4164
+ export type CreateMcpAuthConfigErrors = {
4165
+ /**
4166
+ * Invalid request parameters
4167
+ */
4168
+ 400: OpenAiApiError;
4169
+ /**
4170
+ * Not authenticated
4171
+ */
4172
+ 401: OpenAiApiError;
4173
+ /**
4174
+ * Insufficient permissions
4175
+ */
4176
+ 403: OpenAiApiError;
4177
+ /**
4178
+ * Internal server error
4179
+ */
4180
+ 500: OpenAiApiError;
4181
+ };
4182
+
4183
+ export type CreateMcpAuthConfigError = CreateMcpAuthConfigErrors[keyof CreateMcpAuthConfigErrors];
4184
+
4185
+ export type CreateMcpAuthConfigResponses = {
4186
+ /**
4187
+ * Auth config created
4188
+ */
4189
+ 201: McpAuthConfigResponse;
4190
+ };
4191
+
4192
+ export type CreateMcpAuthConfigResponse = CreateMcpAuthConfigResponses[keyof CreateMcpAuthConfigResponses];
4193
+
4194
+ export type DeleteMcpAuthConfigData = {
4195
+ body?: never;
4196
+ path: {
4197
+ /**
4198
+ * Auth config UUID
4199
+ */
4200
+ id: string;
4201
+ };
4202
+ query?: never;
4203
+ url: '/bodhi/v1/mcps/auth-configs/{id}';
4204
+ };
4205
+
4206
+ export type DeleteMcpAuthConfigErrors = {
4207
+ /**
4208
+ * Invalid request parameters
4209
+ */
4210
+ 400: OpenAiApiError;
4211
+ /**
4212
+ * Not authenticated
4213
+ */
4214
+ 401: OpenAiApiError;
4215
+ /**
4216
+ * Insufficient permissions
4217
+ */
4218
+ 403: OpenAiApiError;
4219
+ /**
4220
+ * Not found
4221
+ */
4222
+ 404: unknown;
4223
+ /**
4224
+ * Internal server error
4225
+ */
4226
+ 500: OpenAiApiError;
4227
+ };
4228
+
4229
+ export type DeleteMcpAuthConfigError = DeleteMcpAuthConfigErrors[keyof DeleteMcpAuthConfigErrors];
4230
+
4231
+ export type DeleteMcpAuthConfigResponses = {
4232
+ /**
4233
+ * Auth config deleted
4234
+ */
4235
+ 204: void;
4236
+ };
4237
+
4238
+ export type DeleteMcpAuthConfigResponse = DeleteMcpAuthConfigResponses[keyof DeleteMcpAuthConfigResponses];
4239
+
4240
+ export type GetMcpAuthConfigData = {
4241
+ body?: never;
4242
+ path: {
4243
+ /**
4244
+ * Auth config UUID
4245
+ */
4246
+ id: string;
4247
+ };
4248
+ query?: never;
4249
+ url: '/bodhi/v1/mcps/auth-configs/{id}';
4250
+ };
4251
+
4252
+ export type GetMcpAuthConfigErrors = {
4253
+ /**
4254
+ * Invalid request parameters
4255
+ */
4256
+ 400: OpenAiApiError;
4257
+ /**
4258
+ * Not authenticated
4259
+ */
4260
+ 401: OpenAiApiError;
4261
+ /**
4262
+ * Insufficient permissions
4263
+ */
4264
+ 403: OpenAiApiError;
4265
+ /**
4266
+ * Not found
4267
+ */
4268
+ 404: unknown;
4269
+ /**
4270
+ * Internal server error
4271
+ */
4272
+ 500: OpenAiApiError;
4273
+ };
4274
+
4275
+ export type GetMcpAuthConfigError = GetMcpAuthConfigErrors[keyof GetMcpAuthConfigErrors];
4276
+
4277
+ export type GetMcpAuthConfigResponses = {
4278
+ /**
4279
+ * Auth config
4280
+ */
4281
+ 200: McpAuthConfigResponse;
4282
+ };
4283
+
4284
+ export type GetMcpAuthConfigResponse = GetMcpAuthConfigResponses[keyof GetMcpAuthConfigResponses];
4285
+
4286
+ export type McpOAuthLoginData = {
4287
+ body: OAuthLoginRequest;
4288
+ path: {
4289
+ /**
4290
+ * Auth config UUID
4291
+ */
4292
+ id: string;
4293
+ };
4294
+ query?: never;
4295
+ url: '/bodhi/v1/mcps/auth-configs/{id}/login';
4296
+ };
4297
+
4298
+ export type McpOAuthLoginErrors = {
4299
+ /**
4300
+ * Invalid request parameters
4301
+ */
4302
+ 400: OpenAiApiError;
4303
+ /**
4304
+ * Not authenticated
4305
+ */
4306
+ 401: OpenAiApiError;
4307
+ /**
4308
+ * Insufficient permissions
4309
+ */
4310
+ 403: OpenAiApiError;
4311
+ /**
4312
+ * Auth config not found
4313
+ */
4314
+ 404: unknown;
4315
+ /**
4316
+ * Internal server error
4317
+ */
4318
+ 500: OpenAiApiError;
4319
+ };
4320
+
4321
+ export type McpOAuthLoginError = McpOAuthLoginErrors[keyof McpOAuthLoginErrors];
4322
+
4323
+ export type McpOAuthLoginResponses = {
4324
+ /**
4325
+ * Authorization URL
4326
+ */
4327
+ 200: OAuthLoginResponse;
4328
+ };
4329
+
4330
+ export type McpOAuthLoginResponse = McpOAuthLoginResponses[keyof McpOAuthLoginResponses];
4331
+
4332
+ export type McpOAuthTokenExchangeData = {
4333
+ body: OAuthTokenExchangeRequest;
4334
+ path: {
4335
+ /**
4336
+ * Auth config UUID
4337
+ */
4338
+ id: string;
4339
+ };
4340
+ query?: never;
4341
+ url: '/bodhi/v1/mcps/auth-configs/{id}/token';
4342
+ };
4343
+
4344
+ export type McpOAuthTokenExchangeErrors = {
4345
+ /**
4346
+ * Invalid request parameters
4347
+ */
4348
+ 400: OpenAiApiError;
4349
+ /**
4350
+ * Not authenticated
4351
+ */
4352
+ 401: OpenAiApiError;
4353
+ /**
4354
+ * Insufficient permissions
4355
+ */
4356
+ 403: OpenAiApiError;
4357
+ /**
4358
+ * Auth config not found
4359
+ */
4360
+ 404: unknown;
4361
+ /**
4362
+ * Internal server error
4363
+ */
4364
+ 500: OpenAiApiError;
4365
+ };
4366
+
4367
+ export type McpOAuthTokenExchangeError = McpOAuthTokenExchangeErrors[keyof McpOAuthTokenExchangeErrors];
4368
+
4369
+ export type McpOAuthTokenExchangeResponses = {
4370
+ /**
4371
+ * Token stored
4372
+ */
4373
+ 200: OAuthTokenResponse;
4374
+ };
4375
+
4376
+ export type McpOAuthTokenExchangeResponse = McpOAuthTokenExchangeResponses[keyof McpOAuthTokenExchangeResponses];
4377
+
4378
+ export type FetchMcpToolsData = {
4379
+ body: FetchMcpToolsRequest;
4380
+ path?: never;
4381
+ query?: never;
4382
+ url: '/bodhi/v1/mcps/fetch-tools';
4383
+ };
4384
+
4385
+ export type FetchMcpToolsErrors = {
4386
+ /**
4387
+ * Invalid request parameters
4388
+ */
4389
+ 400: OpenAiApiError;
4390
+ /**
4391
+ * Not authenticated
4392
+ */
4393
+ 401: OpenAiApiError;
4394
+ /**
4395
+ * Insufficient permissions
4396
+ */
4397
+ 403: OpenAiApiError;
4398
+ /**
4399
+ * MCP server not found
4400
+ */
4401
+ 404: unknown;
4402
+ /**
4403
+ * Internal server error
4404
+ */
4405
+ 500: OpenAiApiError;
4406
+ };
4407
+
4408
+ export type FetchMcpToolsError = FetchMcpToolsErrors[keyof FetchMcpToolsErrors];
4409
+
4410
+ export type FetchMcpToolsResponses = {
4411
+ /**
4412
+ * List of tools from MCP server
4413
+ */
4414
+ 200: McpToolsResponse;
4415
+ };
4416
+
4417
+ export type FetchMcpToolsResponse = FetchMcpToolsResponses[keyof FetchMcpToolsResponses];
4418
+
4419
+ export type DeleteMcpOAuthTokenData = {
4420
+ body?: never;
4421
+ path: {
4422
+ /**
4423
+ * OAuth token UUID
4424
+ */
4425
+ token_id: string;
4426
+ };
4427
+ query?: never;
4428
+ url: '/bodhi/v1/mcps/oauth-tokens/{token_id}';
4429
+ };
4430
+
4431
+ export type DeleteMcpOAuthTokenErrors = {
4432
+ /**
4433
+ * Invalid request parameters
4434
+ */
4435
+ 400: OpenAiApiError;
4436
+ /**
4437
+ * Not authenticated
4438
+ */
4439
+ 401: OpenAiApiError;
4440
+ /**
4441
+ * Insufficient permissions
4442
+ */
4443
+ 403: OpenAiApiError;
4444
+ /**
4445
+ * Not found
4446
+ */
4447
+ 404: unknown;
4448
+ /**
4449
+ * Internal server error
4450
+ */
4451
+ 500: OpenAiApiError;
4452
+ };
4453
+
4454
+ export type DeleteMcpOAuthTokenError = DeleteMcpOAuthTokenErrors[keyof DeleteMcpOAuthTokenErrors];
4455
+
4456
+ export type DeleteMcpOAuthTokenResponses = {
4457
+ /**
4458
+ * OAuth token deleted
4459
+ */
4460
+ 204: void;
4461
+ };
4462
+
4463
+ export type DeleteMcpOAuthTokenResponse = DeleteMcpOAuthTokenResponses[keyof DeleteMcpOAuthTokenResponses];
4464
+
4465
+ export type GetMcpOAuthTokenData = {
4466
+ body?: never;
4467
+ path: {
4468
+ /**
4469
+ * OAuth token UUID
4470
+ */
4471
+ token_id: string;
4472
+ };
4473
+ query?: never;
4474
+ url: '/bodhi/v1/mcps/oauth-tokens/{token_id}';
4475
+ };
4476
+
4477
+ export type GetMcpOAuthTokenErrors = {
4478
+ /**
4479
+ * Invalid request parameters
4480
+ */
4481
+ 400: OpenAiApiError;
4482
+ /**
4483
+ * Not authenticated
4484
+ */
4485
+ 401: OpenAiApiError;
4486
+ /**
4487
+ * Insufficient permissions
4488
+ */
4489
+ 403: OpenAiApiError;
4490
+ /**
4491
+ * Not found
4492
+ */
4493
+ 404: unknown;
4494
+ /**
4495
+ * Internal server error
4496
+ */
4497
+ 500: OpenAiApiError;
4498
+ };
4499
+
4500
+ export type GetMcpOAuthTokenError = GetMcpOAuthTokenErrors[keyof GetMcpOAuthTokenErrors];
4501
+
4502
+ export type GetMcpOAuthTokenResponses = {
4503
+ /**
4504
+ * OAuth token
4505
+ */
4506
+ 200: OAuthTokenResponse;
4507
+ };
4508
+
4509
+ export type GetMcpOAuthTokenResponse = GetMcpOAuthTokenResponses[keyof GetMcpOAuthTokenResponses];
4510
+
4511
+ export type McpOAuthDiscoverAsData = {
4512
+ body: OAuthDiscoverAsRequest;
4513
+ path?: never;
4514
+ query?: never;
4515
+ url: '/bodhi/v1/mcps/oauth/discover-as';
4516
+ };
4517
+
4518
+ export type McpOAuthDiscoverAsErrors = {
4519
+ /**
4520
+ * Invalid request parameters
4521
+ */
4522
+ 400: OpenAiApiError;
4523
+ /**
4524
+ * Not authenticated
4525
+ */
4526
+ 401: OpenAiApiError;
4527
+ /**
4528
+ * Insufficient permissions
4529
+ */
4530
+ 403: OpenAiApiError;
4531
+ /**
4532
+ * Internal server error
4533
+ */
4534
+ 500: OpenAiApiError;
4535
+ };
4536
+
4537
+ export type McpOAuthDiscoverAsError = McpOAuthDiscoverAsErrors[keyof McpOAuthDiscoverAsErrors];
4538
+
4539
+ export type McpOAuthDiscoverAsResponses = {
4540
+ /**
4541
+ * OAuth discovery metadata
4542
+ */
4543
+ 200: OAuthDiscoverAsResponse;
4544
+ };
4545
+
4546
+ export type McpOAuthDiscoverAsResponse = McpOAuthDiscoverAsResponses[keyof McpOAuthDiscoverAsResponses];
4547
+
4548
+ export type McpOAuthDiscoverMcpData = {
4549
+ body: OAuthDiscoverMcpRequest;
4550
+ path?: never;
4551
+ query?: never;
4552
+ url: '/bodhi/v1/mcps/oauth/discover-mcp';
4553
+ };
4554
+
4555
+ export type McpOAuthDiscoverMcpErrors = {
4556
+ /**
4557
+ * Invalid request parameters
4558
+ */
4559
+ 400: OpenAiApiError;
4560
+ /**
4561
+ * Not authenticated
4562
+ */
4563
+ 401: OpenAiApiError;
4564
+ /**
4565
+ * Insufficient permissions
4566
+ */
4567
+ 403: OpenAiApiError;
4568
+ /**
4569
+ * Internal server error
4570
+ */
4571
+ 500: OpenAiApiError;
4572
+ };
4573
+
4574
+ export type McpOAuthDiscoverMcpError = McpOAuthDiscoverMcpErrors[keyof McpOAuthDiscoverMcpErrors];
4575
+
4576
+ export type McpOAuthDiscoverMcpResponses = {
4577
+ /**
4578
+ * MCP OAuth discovery metadata
4579
+ */
4580
+ 200: OAuthDiscoverMcpResponse;
4581
+ };
4582
+
4583
+ export type McpOAuthDiscoverMcpResponse = McpOAuthDiscoverMcpResponses[keyof McpOAuthDiscoverMcpResponses];
4584
+
4585
+ export type McpOAuthDynamicRegisterStandaloneData = {
4586
+ body: DynamicRegisterRequest;
4587
+ path?: never;
4588
+ query?: never;
4589
+ url: '/bodhi/v1/mcps/oauth/dynamic-register';
4590
+ };
4591
+
4592
+ export type McpOAuthDynamicRegisterStandaloneErrors = {
4593
+ /**
4594
+ * Invalid request parameters
4595
+ */
4596
+ 400: OpenAiApiError;
4597
+ /**
4598
+ * Not authenticated
4599
+ */
4600
+ 401: OpenAiApiError;
4601
+ /**
4602
+ * Insufficient permissions
4603
+ */
4604
+ 403: OpenAiApiError;
4605
+ /**
4606
+ * Internal server error
4607
+ */
4608
+ 500: OpenAiApiError;
4609
+ };
4610
+
4611
+ export type McpOAuthDynamicRegisterStandaloneError = McpOAuthDynamicRegisterStandaloneErrors[keyof McpOAuthDynamicRegisterStandaloneErrors];
4612
+
4613
+ export type McpOAuthDynamicRegisterStandaloneResponses = {
4614
+ /**
4615
+ * Dynamic client registration result
4616
+ */
4617
+ 200: DynamicRegisterResponse;
4618
+ };
4619
+
4620
+ export type McpOAuthDynamicRegisterStandaloneResponse = McpOAuthDynamicRegisterStandaloneResponses[keyof McpOAuthDynamicRegisterStandaloneResponses];
4621
+
4622
+ export type ListMcpServersData = {
4623
+ body?: never;
4624
+ path?: never;
4625
+ query?: {
4626
+ /**
4627
+ * Filter by enabled status
4628
+ */
4629
+ enabled?: boolean;
4630
+ };
4631
+ url: '/bodhi/v1/mcps/servers';
4632
+ };
4633
+
4634
+ export type ListMcpServersErrors = {
4635
+ /**
4636
+ * Invalid request parameters
4637
+ */
4638
+ 400: OpenAiApiError;
4639
+ /**
4640
+ * Not authenticated
4641
+ */
4642
+ 401: OpenAiApiError;
4643
+ /**
4644
+ * Insufficient permissions
4645
+ */
4646
+ 403: OpenAiApiError;
4647
+ /**
4648
+ * Internal server error
4649
+ */
4650
+ 500: OpenAiApiError;
4651
+ };
4652
+
4653
+ export type ListMcpServersError = ListMcpServersErrors[keyof ListMcpServersErrors];
4654
+
4655
+ export type ListMcpServersResponses = {
4656
+ /**
4657
+ * List of MCP servers
4658
+ */
4659
+ 200: ListMcpServersResponse;
4660
+ };
4661
+
4662
+ export type ListMcpServersResponse2 = ListMcpServersResponses[keyof ListMcpServersResponses];
4663
+
4664
+ export type CreateMcpServerData = {
4665
+ body: CreateMcpServerRequest;
4666
+ path?: never;
4667
+ query?: never;
4668
+ url: '/bodhi/v1/mcps/servers';
4669
+ };
4670
+
4671
+ export type CreateMcpServerErrors = {
4672
+ /**
4673
+ * Invalid request parameters
4674
+ */
4675
+ 400: OpenAiApiError;
4676
+ /**
4677
+ * Not authenticated
4678
+ */
4679
+ 401: OpenAiApiError;
4680
+ /**
4681
+ * Insufficient permissions
4682
+ */
4683
+ 403: OpenAiApiError;
4684
+ /**
4685
+ * URL already exists
4686
+ */
4687
+ 409: unknown;
4688
+ /**
4689
+ * Internal server error
4690
+ */
4691
+ 500: OpenAiApiError;
4692
+ };
4693
+
4694
+ export type CreateMcpServerError = CreateMcpServerErrors[keyof CreateMcpServerErrors];
3062
4695
 
3063
- export type GetApiModelResponses = {
4696
+ export type CreateMcpServerResponses = {
3064
4697
  /**
3065
- * API model configuration retrieved successfully
4698
+ * MCP server created
3066
4699
  */
3067
- 200: ApiModelResponse;
4700
+ 201: McpServerResponse;
3068
4701
  };
3069
4702
 
3070
- export type GetApiModelResponse = GetApiModelResponses[keyof GetApiModelResponses];
4703
+ export type CreateMcpServerResponse = CreateMcpServerResponses[keyof CreateMcpServerResponses];
3071
4704
 
3072
- export type UpdateApiModelData = {
3073
- body: UpdateApiModelRequest;
4705
+ export type GetMcpServerData = {
4706
+ body?: never;
3074
4707
  path: {
3075
4708
  /**
3076
- * API model ID
4709
+ * MCP server UUID
3077
4710
  */
3078
4711
  id: string;
3079
4712
  };
3080
4713
  query?: never;
3081
- url: '/bodhi/v1/api-models/{id}';
4714
+ url: '/bodhi/v1/mcps/servers/{id}';
3082
4715
  };
3083
4716
 
3084
- export type UpdateApiModelErrors = {
4717
+ export type GetMcpServerErrors = {
3085
4718
  /**
3086
4719
  * Invalid request parameters
3087
4720
  */
@@ -3095,39 +4728,39 @@ export type UpdateApiModelErrors = {
3095
4728
  */
3096
4729
  403: OpenAiApiError;
3097
4730
  /**
3098
- * API model not found
4731
+ * Not found
3099
4732
  */
3100
- 404: OpenAiApiError;
4733
+ 404: unknown;
3101
4734
  /**
3102
4735
  * Internal server error
3103
4736
  */
3104
4737
  500: OpenAiApiError;
3105
4738
  };
3106
4739
 
3107
- export type UpdateApiModelError = UpdateApiModelErrors[keyof UpdateApiModelErrors];
4740
+ export type GetMcpServerError = GetMcpServerErrors[keyof GetMcpServerErrors];
3108
4741
 
3109
- export type UpdateApiModelResponses = {
4742
+ export type GetMcpServerResponses = {
3110
4743
  /**
3111
- * API model updated
4744
+ * MCP server
3112
4745
  */
3113
- 200: ApiModelResponse;
4746
+ 200: McpServerResponse;
3114
4747
  };
3115
4748
 
3116
- export type UpdateApiModelResponse = UpdateApiModelResponses[keyof UpdateApiModelResponses];
4749
+ export type GetMcpServerResponse = GetMcpServerResponses[keyof GetMcpServerResponses];
3117
4750
 
3118
- export type SyncModelsData = {
3119
- body?: never;
4751
+ export type UpdateMcpServerData = {
4752
+ body: UpdateMcpServerRequest;
3120
4753
  path: {
3121
4754
  /**
3122
- * Unique identifier for the API model alias
4755
+ * MCP server UUID
3123
4756
  */
3124
4757
  id: string;
3125
4758
  };
3126
4759
  query?: never;
3127
- url: '/bodhi/v1/api-models/{id}/sync-models';
4760
+ url: '/bodhi/v1/mcps/servers/{id}';
3128
4761
  };
3129
4762
 
3130
- export type SyncModelsErrors = {
4763
+ export type UpdateMcpServerErrors = {
3131
4764
  /**
3132
4765
  * Invalid request parameters
3133
4766
  */
@@ -3141,37 +4774,43 @@ export type SyncModelsErrors = {
3141
4774
  */
3142
4775
  403: OpenAiApiError;
3143
4776
  /**
3144
- * API model not found
4777
+ * Not found
3145
4778
  */
3146
4779
  404: unknown;
4780
+ /**
4781
+ * URL already exists
4782
+ */
4783
+ 409: unknown;
3147
4784
  /**
3148
4785
  * Internal server error
3149
4786
  */
3150
4787
  500: OpenAiApiError;
3151
4788
  };
3152
4789
 
3153
- export type SyncModelsError = SyncModelsErrors[keyof SyncModelsErrors];
4790
+ export type UpdateMcpServerError = UpdateMcpServerErrors[keyof UpdateMcpServerErrors];
3154
4791
 
3155
- export type SyncModelsResponses = {
4792
+ export type UpdateMcpServerResponses = {
3156
4793
  /**
3157
- * Models synced to cache successfully
4794
+ * MCP server updated
3158
4795
  */
3159
- 200: ApiModelResponse;
4796
+ 200: McpServerResponse;
3160
4797
  };
3161
4798
 
3162
- export type SyncModelsResponse = SyncModelsResponses[keyof SyncModelsResponses];
4799
+ export type UpdateMcpServerResponse = UpdateMcpServerResponses[keyof UpdateMcpServerResponses];
3163
4800
 
3164
- export type RequestAccessData = {
3165
- /**
3166
- * Application client requesting access
3167
- */
3168
- body: AppAccessRequest;
3169
- path?: never;
4801
+ export type DeleteMcpData = {
4802
+ body?: never;
4803
+ path: {
4804
+ /**
4805
+ * MCP instance UUID
4806
+ */
4807
+ id: string;
4808
+ };
3170
4809
  query?: never;
3171
- url: '/bodhi/v1/apps/request-access';
4810
+ url: '/bodhi/v1/mcps/{id}';
3172
4811
  };
3173
4812
 
3174
- export type RequestAccessErrors = {
4813
+ export type DeleteMcpErrors = {
3175
4814
  /**
3176
4815
  * Invalid request parameters
3177
4816
  */
@@ -3184,34 +4823,40 @@ export type RequestAccessErrors = {
3184
4823
  * Insufficient permissions
3185
4824
  */
3186
4825
  403: OpenAiApiError;
4826
+ /**
4827
+ * MCP not found
4828
+ */
4829
+ 404: unknown;
3187
4830
  /**
3188
4831
  * Internal server error
3189
4832
  */
3190
4833
  500: OpenAiApiError;
3191
4834
  };
3192
4835
 
3193
- export type RequestAccessError = RequestAccessErrors[keyof RequestAccessErrors];
4836
+ export type DeleteMcpError = DeleteMcpErrors[keyof DeleteMcpErrors];
3194
4837
 
3195
- export type RequestAccessResponses = {
4838
+ export type DeleteMcpResponses = {
3196
4839
  /**
3197
- * Access granted successfully
4840
+ * MCP deleted
3198
4841
  */
3199
- 200: AppAccessResponse;
4842
+ 204: void;
3200
4843
  };
3201
4844
 
3202
- export type RequestAccessResponse = RequestAccessResponses[keyof RequestAccessResponses];
4845
+ export type DeleteMcpResponse = DeleteMcpResponses[keyof DeleteMcpResponses];
3203
4846
 
3204
- export type CompleteOAuthFlowData = {
3205
- /**
3206
- * OAuth callback parameters from authorization server
3207
- */
3208
- body: AuthCallbackRequest;
3209
- path?: never;
4847
+ export type GetMcpData = {
4848
+ body?: never;
4849
+ path: {
4850
+ /**
4851
+ * MCP instance UUID
4852
+ */
4853
+ id: string;
4854
+ };
3210
4855
  query?: never;
3211
- url: '/bodhi/v1/auth/callback';
4856
+ url: '/bodhi/v1/mcps/{id}';
3212
4857
  };
3213
4858
 
3214
- export type CompleteOAuthFlowErrors = {
4859
+ export type GetMcpErrors = {
3215
4860
  /**
3216
4861
  * Invalid request parameters
3217
4862
  */
@@ -3225,34 +4870,39 @@ export type CompleteOAuthFlowErrors = {
3225
4870
  */
3226
4871
  403: OpenAiApiError;
3227
4872
  /**
3228
- * OAuth error, invalid request parameters, or state mismatch
4873
+ * MCP not found
3229
4874
  */
3230
- 422: OpenAiApiError;
4875
+ 404: unknown;
3231
4876
  /**
3232
4877
  * Internal server error
3233
4878
  */
3234
4879
  500: OpenAiApiError;
3235
4880
  };
3236
4881
 
3237
- export type CompleteOAuthFlowError = CompleteOAuthFlowErrors[keyof CompleteOAuthFlowErrors];
4882
+ export type GetMcpError = GetMcpErrors[keyof GetMcpErrors];
3238
4883
 
3239
- export type CompleteOAuthFlowResponses = {
4884
+ export type GetMcpResponses = {
3240
4885
  /**
3241
- * OAuth flow completed successfully, user authenticated
4886
+ * MCP instance
3242
4887
  */
3243
- 200: RedirectResponse;
4888
+ 200: McpResponse;
3244
4889
  };
3245
4890
 
3246
- export type CompleteOAuthFlowResponse = CompleteOAuthFlowResponses[keyof CompleteOAuthFlowResponses];
4891
+ export type GetMcpResponse = GetMcpResponses[keyof GetMcpResponses];
3247
4892
 
3248
- export type InitiateOAuthFlowData = {
3249
- body: unknown;
3250
- path?: never;
4893
+ export type UpdateMcpData = {
4894
+ body: UpdateMcpRequest;
4895
+ path: {
4896
+ /**
4897
+ * MCP instance UUID
4898
+ */
4899
+ id: string;
4900
+ };
3251
4901
  query?: never;
3252
- url: '/bodhi/v1/auth/initiate';
4902
+ url: '/bodhi/v1/mcps/{id}';
3253
4903
  };
3254
4904
 
3255
- export type InitiateOAuthFlowErrors = {
4905
+ export type UpdateMcpErrors = {
3256
4906
  /**
3257
4907
  * Invalid request parameters
3258
4908
  */
@@ -3265,64 +4915,90 @@ export type InitiateOAuthFlowErrors = {
3265
4915
  * Insufficient permissions
3266
4916
  */
3267
4917
  403: OpenAiApiError;
4918
+ /**
4919
+ * MCP not found
4920
+ */
4921
+ 404: unknown;
3268
4922
  /**
3269
4923
  * Internal server error
3270
4924
  */
3271
4925
  500: OpenAiApiError;
3272
4926
  };
3273
4927
 
3274
- export type InitiateOAuthFlowError = InitiateOAuthFlowErrors[keyof InitiateOAuthFlowErrors];
4928
+ export type UpdateMcpError = UpdateMcpErrors[keyof UpdateMcpErrors];
3275
4929
 
3276
- export type InitiateOAuthFlowResponses = {
3277
- /**
3278
- * User already authenticated, home page URL provided
3279
- */
3280
- 200: RedirectResponse;
4930
+ export type UpdateMcpResponses = {
3281
4931
  /**
3282
- * User not authenticated, OAuth authorization URL provided
4932
+ * MCP updated
3283
4933
  */
3284
- 201: RedirectResponse;
4934
+ 200: McpResponse;
3285
4935
  };
3286
4936
 
3287
- export type InitiateOAuthFlowResponse = InitiateOAuthFlowResponses[keyof InitiateOAuthFlowResponses];
4937
+ export type UpdateMcpResponse = UpdateMcpResponses[keyof UpdateMcpResponses];
3288
4938
 
3289
- export type GetAppInfoData = {
4939
+ export type RefreshMcpToolsData = {
3290
4940
  body?: never;
3291
- path?: never;
4941
+ path: {
4942
+ /**
4943
+ * MCP instance UUID
4944
+ */
4945
+ id: string;
4946
+ };
3292
4947
  query?: never;
3293
- url: '/bodhi/v1/info';
4948
+ url: '/bodhi/v1/mcps/{id}/tools/refresh';
3294
4949
  };
3295
4950
 
3296
- export type GetAppInfoErrors = {
4951
+ export type RefreshMcpToolsErrors = {
3297
4952
  /**
3298
4953
  * Invalid request parameters
3299
4954
  */
3300
4955
  400: OpenAiApiError;
4956
+ /**
4957
+ * Not authenticated
4958
+ */
4959
+ 401: OpenAiApiError;
4960
+ /**
4961
+ * Insufficient permissions
4962
+ */
4963
+ 403: OpenAiApiError;
4964
+ /**
4965
+ * MCP not found
4966
+ */
4967
+ 404: unknown;
3301
4968
  /**
3302
4969
  * Internal server error
3303
4970
  */
3304
4971
  500: OpenAiApiError;
3305
4972
  };
3306
4973
 
3307
- export type GetAppInfoError = GetAppInfoErrors[keyof GetAppInfoErrors];
4974
+ export type RefreshMcpToolsError = RefreshMcpToolsErrors[keyof RefreshMcpToolsErrors];
3308
4975
 
3309
- export type GetAppInfoResponses = {
4976
+ export type RefreshMcpToolsResponses = {
3310
4977
  /**
3311
- * Application information retrieved successfully
4978
+ * Refreshed list of tools
3312
4979
  */
3313
- 200: AppInfo;
4980
+ 200: McpToolsResponse;
3314
4981
  };
3315
4982
 
3316
- export type GetAppInfoResponse = GetAppInfoResponses[keyof GetAppInfoResponses];
4983
+ export type RefreshMcpToolsResponse = RefreshMcpToolsResponses[keyof RefreshMcpToolsResponses];
3317
4984
 
3318
- export type LogoutUserData = {
3319
- body?: never;
3320
- path?: never;
4985
+ export type ExecuteMcpToolData = {
4986
+ body: McpExecuteRequest;
4987
+ path: {
4988
+ /**
4989
+ * MCP instance UUID
4990
+ */
4991
+ id: string;
4992
+ /**
4993
+ * Tool name to execute
4994
+ */
4995
+ tool_name: string;
4996
+ };
3321
4997
  query?: never;
3322
- url: '/bodhi/v1/logout';
4998
+ url: '/bodhi/v1/mcps/{id}/tools/{tool_name}/execute';
3323
4999
  };
3324
5000
 
3325
- export type LogoutUserErrors = {
5001
+ export type ExecuteMcpToolErrors = {
3326
5002
  /**
3327
5003
  * Invalid request parameters
3328
5004
  */
@@ -3335,22 +5011,26 @@ export type LogoutUserErrors = {
3335
5011
  * Insufficient permissions
3336
5012
  */
3337
5013
  403: OpenAiApiError;
5014
+ /**
5015
+ * MCP or tool not found
5016
+ */
5017
+ 404: unknown;
3338
5018
  /**
3339
5019
  * Internal server error
3340
5020
  */
3341
5021
  500: OpenAiApiError;
3342
5022
  };
3343
5023
 
3344
- export type LogoutUserError = LogoutUserErrors[keyof LogoutUserErrors];
5024
+ export type ExecuteMcpToolError = ExecuteMcpToolErrors[keyof ExecuteMcpToolErrors];
3345
5025
 
3346
- export type LogoutUserResponses = {
5026
+ export type ExecuteMcpToolResponses = {
3347
5027
  /**
3348
- * User logged out successfully
5028
+ * Tool execution result
3349
5029
  */
3350
- 200: RedirectResponse;
5030
+ 200: McpExecuteResponse;
3351
5031
  };
3352
5032
 
3353
- export type LogoutUserResponse = LogoutUserResponses[keyof LogoutUserResponses];
5033
+ export type ExecuteMcpToolResponse = ExecuteMcpToolResponses[keyof ExecuteMcpToolResponses];
3354
5034
 
3355
5035
  export type ListModelFilesData = {
3356
5036
  body?: never;
@@ -3504,56 +5184,6 @@ export type PullModelFileResponses = {
3504
5184
 
3505
5185
  export type PullModelFileResponse = PullModelFileResponses[keyof PullModelFileResponses];
3506
5186
 
3507
- export type PullModelByAliasData = {
3508
- body?: never;
3509
- path: {
3510
- /**
3511
- * 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.
3512
- */
3513
- alias: string;
3514
- };
3515
- query?: never;
3516
- url: '/bodhi/v1/modelfiles/pull/{alias}';
3517
- };
3518
-
3519
- export type PullModelByAliasErrors = {
3520
- /**
3521
- * Invalid request parameters
3522
- */
3523
- 400: OpenAiApiError;
3524
- /**
3525
- * Not authenticated
3526
- */
3527
- 401: OpenAiApiError;
3528
- /**
3529
- * Insufficient permissions
3530
- */
3531
- 403: OpenAiApiError;
3532
- /**
3533
- * Alias not found
3534
- */
3535
- 404: OpenAiApiError;
3536
- /**
3537
- * Internal server error
3538
- */
3539
- 500: OpenAiApiError;
3540
- };
3541
-
3542
- export type PullModelByAliasError = PullModelByAliasErrors[keyof PullModelByAliasErrors];
3543
-
3544
- export type PullModelByAliasResponses = {
3545
- /**
3546
- * Existing download request found
3547
- */
3548
- 200: DownloadRequest;
3549
- /**
3550
- * Download request created
3551
- */
3552
- 201: DownloadRequest;
3553
- };
3554
-
3555
- export type PullModelByAliasResponse = PullModelByAliasResponses[keyof PullModelByAliasResponses];
3556
-
3557
5187
  export type GetDownloadStatusData = {
3558
5188
  body?: never;
3559
5189
  path: {
@@ -3739,16 +5369,60 @@ export type RefreshModelMetadataResponses = {
3739
5369
 
3740
5370
  export type RefreshModelMetadataResponse = RefreshModelMetadataResponses[keyof RefreshModelMetadataResponses];
3741
5371
 
5372
+ export type DeleteAliasData = {
5373
+ body?: never;
5374
+ path: {
5375
+ /**
5376
+ * UUID of the alias to delete
5377
+ */
5378
+ id: string;
5379
+ };
5380
+ query?: never;
5381
+ url: '/bodhi/v1/models/{id}';
5382
+ };
5383
+
5384
+ export type DeleteAliasErrors = {
5385
+ /**
5386
+ * Invalid request parameters
5387
+ */
5388
+ 400: OpenAiApiError;
5389
+ /**
5390
+ * Not authenticated
5391
+ */
5392
+ 401: OpenAiApiError;
5393
+ /**
5394
+ * Insufficient permissions
5395
+ */
5396
+ 403: OpenAiApiError;
5397
+ /**
5398
+ * Alias not found
5399
+ */
5400
+ 404: unknown;
5401
+ /**
5402
+ * Internal server error
5403
+ */
5404
+ 500: OpenAiApiError;
5405
+ };
5406
+
5407
+ export type DeleteAliasError = DeleteAliasErrors[keyof DeleteAliasErrors];
5408
+
5409
+ export type DeleteAliasResponses = {
5410
+ /**
5411
+ * Alias deleted successfully
5412
+ */
5413
+ 200: unknown;
5414
+ };
5415
+
3742
5416
  export type GetAliasData = {
3743
5417
  body?: never;
3744
5418
  path: {
3745
5419
  /**
3746
- * Alias identifier for the model
5420
+ * UUID of the alias
3747
5421
  */
3748
- alias: string;
5422
+ id: string;
3749
5423
  };
3750
5424
  query?: never;
3751
- url: '/bodhi/v1/models/{alias}';
5425
+ url: '/bodhi/v1/models/{id}';
3752
5426
  };
3753
5427
 
3754
5428
  export type GetAliasErrors = {
@@ -3789,7 +5463,7 @@ export type UpdateAliasData = {
3789
5463
  body: UpdateAliasRequest;
3790
5464
  path: {
3791
5465
  /**
3792
- * Alias identifier
5466
+ * UUID of the alias to update
3793
5467
  */
3794
5468
  id: string;
3795
5469
  };
@@ -3827,6 +5501,52 @@ export type UpdateAliasResponses = {
3827
5501
 
3828
5502
  export type UpdateAliasResponse = UpdateAliasResponses[keyof UpdateAliasResponses];
3829
5503
 
5504
+ export type CopyAliasData = {
5505
+ body: CopyAliasRequest;
5506
+ path: {
5507
+ /**
5508
+ * UUID of the alias to copy
5509
+ */
5510
+ id: string;
5511
+ };
5512
+ query?: never;
5513
+ url: '/bodhi/v1/models/{id}/copy';
5514
+ };
5515
+
5516
+ export type CopyAliasErrors = {
5517
+ /**
5518
+ * Invalid request parameters
5519
+ */
5520
+ 400: OpenAiApiError;
5521
+ /**
5522
+ * Not authenticated
5523
+ */
5524
+ 401: OpenAiApiError;
5525
+ /**
5526
+ * Insufficient permissions
5527
+ */
5528
+ 403: OpenAiApiError;
5529
+ /**
5530
+ * Source alias not found
5531
+ */
5532
+ 404: unknown;
5533
+ /**
5534
+ * Internal server error
5535
+ */
5536
+ 500: OpenAiApiError;
5537
+ };
5538
+
5539
+ export type CopyAliasError = CopyAliasErrors[keyof CopyAliasErrors];
5540
+
5541
+ export type CopyAliasResponses = {
5542
+ /**
5543
+ * Alias copied successfully
5544
+ */
5545
+ 201: UserAliasResponse;
5546
+ };
5547
+
5548
+ export type CopyAliasResponse = CopyAliasResponses[keyof CopyAliasResponses];
5549
+
3830
5550
  export type GetQueueStatusData = {
3831
5551
  body?: never;
3832
5552
  path?: never;
@@ -4217,12 +5937,12 @@ export type DisableToolsetTypeData = {
4217
5937
  body?: never;
4218
5938
  path: {
4219
5939
  /**
4220
- * Toolset type identifier
5940
+ * Toolset type identifier (e.g., 'builtin-exa-search')
4221
5941
  */
4222
- type_id: string;
5942
+ toolset_type: string;
4223
5943
  };
4224
5944
  query?: never;
4225
- url: '/bodhi/v1/toolset_types/{type_id}/app-config';
5945
+ url: '/bodhi/v1/toolset_types/{toolset_type}/app-config';
4226
5946
  };
4227
5947
 
4228
5948
  export type DisableToolsetTypeErrors = {
@@ -4254,7 +5974,7 @@ export type DisableToolsetTypeResponses = {
4254
5974
  /**
4255
5975
  * Toolset type disabled
4256
5976
  */
4257
- 200: AppToolsetConfigResponse;
5977
+ 200: AppToolsetConfig;
4258
5978
  };
4259
5979
 
4260
5980
  export type DisableToolsetTypeResponse = DisableToolsetTypeResponses[keyof DisableToolsetTypeResponses];
@@ -4263,12 +5983,12 @@ export type EnableToolsetTypeData = {
4263
5983
  body?: never;
4264
5984
  path: {
4265
5985
  /**
4266
- * Toolset type identifier
5986
+ * Toolset type identifier (e.g., 'builtin-exa-search')
4267
5987
  */
4268
- type_id: string;
5988
+ toolset_type: string;
4269
5989
  };
4270
5990
  query?: never;
4271
- url: '/bodhi/v1/toolset_types/{type_id}/app-config';
5991
+ url: '/bodhi/v1/toolset_types/{toolset_type}/app-config';
4272
5992
  };
4273
5993
 
4274
5994
  export type EnableToolsetTypeErrors = {
@@ -4300,7 +6020,7 @@ export type EnableToolsetTypeResponses = {
4300
6020
  /**
4301
6021
  * Toolset type enabled
4302
6022
  */
4303
- 200: AppToolsetConfigResponse;
6023
+ 200: AppToolsetConfig;
4304
6024
  };
4305
6025
 
4306
6026
  export type EnableToolsetTypeResponse = EnableToolsetTypeResponses[keyof EnableToolsetTypeResponses];
@@ -4525,7 +6245,7 @@ export type UpdateToolsetResponses = {
4525
6245
 
4526
6246
  export type UpdateToolsetResponse = UpdateToolsetResponses[keyof UpdateToolsetResponses];
4527
6247
 
4528
- export type ExecuteToolsetData = {
6248
+ export type ExecuteToolsetToolData = {
4529
6249
  body: ExecuteToolsetRequest;
4530
6250
  path: {
4531
6251
  /**
@@ -4533,15 +6253,15 @@ export type ExecuteToolsetData = {
4533
6253
  */
4534
6254
  id: string;
4535
6255
  /**
4536
- * Tool method name
6256
+ * Tool name to execute
4537
6257
  */
4538
- method: string;
6258
+ tool_name: string;
4539
6259
  };
4540
6260
  query?: never;
4541
- url: '/bodhi/v1/toolsets/{id}/execute/{method}';
6261
+ url: '/bodhi/v1/toolsets/{id}/tools/{tool_name}/execute';
4542
6262
  };
4543
6263
 
4544
- export type ExecuteToolsetErrors = {
6264
+ export type ExecuteToolsetToolErrors = {
4545
6265
  /**
4546
6266
  * Invalid request parameters
4547
6267
  */
@@ -4564,16 +6284,16 @@ export type ExecuteToolsetErrors = {
4564
6284
  500: OpenAiApiError;
4565
6285
  };
4566
6286
 
4567
- export type ExecuteToolsetError = ExecuteToolsetErrors[keyof ExecuteToolsetErrors];
6287
+ export type ExecuteToolsetToolError = ExecuteToolsetToolErrors[keyof ExecuteToolsetToolErrors];
4568
6288
 
4569
- export type ExecuteToolsetResponses = {
6289
+ export type ExecuteToolsetToolResponses = {
4570
6290
  /**
4571
6291
  * Tool execution result
4572
6292
  */
4573
6293
  200: ToolsetExecutionResponse;
4574
6294
  };
4575
6295
 
4576
- export type ExecuteToolsetResponse = ExecuteToolsetResponses[keyof ExecuteToolsetResponses];
6296
+ export type ExecuteToolsetToolResponse = ExecuteToolsetToolResponses[keyof ExecuteToolsetToolResponses];
4577
6297
 
4578
6298
  export type GetCurrentUserData = {
4579
6299
  body?: never;