@bodhiapp/ts-client 0.1.17 → 0.1.18

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.
@@ -136,59 +136,59 @@ export type ApiFormatsResponse = {
136
136
  */
137
137
  export type ApiKey = string | null;
138
138
  /**
139
- * Represents an API key update action for API model updates
139
+ * Represents an API key update operation for API model aliases and toolsets.
140
140
  */
141
- export type ApiKeyUpdateAction = {
141
+ export type ApiKeyUpdate = {
142
142
  action: 'keep';
143
143
  } | {
144
144
  /**
145
- * Set a new API key (or add one if none exists) - can be None for public APIs
145
+ * Set a new API key (or add one if none exists) - ApiKey validates length
146
146
  */
147
147
  value: ApiKey;
148
148
  action: 'set';
149
149
  };
150
150
  /**
151
- * API key update enum (mirrors services::db::ApiKeyUpdate)
151
+ * Output type for API model configuration.
152
152
  */
153
- export type ApiKeyUpdateDto = {
154
- action: 'Keep';
155
- } | {
156
- /**
157
- * Set a new API key (or clear if None)
158
- */
159
- value: string | null;
160
- action: 'Set';
161
- };
162
- /**
163
- * Response containing API model configuration
164
- */
165
- export type ApiModelResponse = {
153
+ export type ApiModelOutput = {
166
154
  id: string;
167
155
  api_format: ApiFormat;
168
156
  base_url: string;
169
- api_key_masked?: string | null;
157
+ has_api_key: boolean;
170
158
  models: Array<string>;
171
159
  prefix?: string | null;
172
160
  forward_all_with_prefix: boolean;
173
161
  created_at: string;
174
162
  updated_at: string;
175
163
  };
176
- export type ApiToken = {
177
- id: string;
178
- user_id: string;
179
- name: string;
180
- token_prefix: string;
181
- token_hash: string;
182
- scopes: string;
183
- status: TokenStatus;
184
- created_at: string;
185
- updated_at: string;
186
- };
187
- export type ApiTokenResponse = {
164
+ /**
165
+ * Input request for creating or updating an API model configuration.
166
+ */
167
+ export type ApiModelRequest = {
188
168
  /**
189
- * API token with bodhiapp_ prefix for programmatic access
169
+ * API format/protocol (e.g., "openai")
190
170
  */
191
- token: string;
171
+ api_format: ApiFormat;
172
+ /**
173
+ * API base URL
174
+ */
175
+ base_url: string;
176
+ /**
177
+ * API key update action (Keep/Set with Some or None)
178
+ */
179
+ api_key?: ApiKeyUpdate;
180
+ /**
181
+ * List of available models
182
+ */
183
+ models: Array<string>;
184
+ /**
185
+ * Optional prefix for model namespacing (e.g., "azure/" for "azure/gpt-4")
186
+ */
187
+ prefix?: string | null;
188
+ /**
189
+ * Whether to forward all requests with this prefix (true) or only selected models (false)
190
+ */
191
+ forward_all_with_prefix?: boolean;
192
192
  };
193
193
  export type AppAccessRequestStatus = 'draft' | 'approved' | 'denied' | 'failed' | 'expired';
194
194
  /**
@@ -207,9 +207,17 @@ export type AppInfo = {
207
207
  * Current application setup and operational status
208
208
  */
209
209
  status: AppStatus;
210
+ /**
211
+ * Deployment mode: "standalone" or "multi_tenant"
212
+ */
213
+ deployment: DeploymentMode;
214
+ /**
215
+ * Active tenant's OAuth client_id (present when authenticated with an active tenant)
216
+ */
217
+ client_id?: string | null;
210
218
  };
211
219
  export type AppRole = ResourceRole | TokenScope | UserScope;
212
- export type AppStatus = 'setup' | 'ready' | 'resource_admin';
220
+ export type AppStatus = 'setup' | 'ready' | 'resource_admin' | 'tenant_selection';
213
221
  /**
214
222
  * Application-level toolset configuration
215
223
  */
@@ -244,7 +252,10 @@ export type AppToolsetConfig = {
244
252
  updated_at: string;
245
253
  };
246
254
  export type ApprovalStatus = 'approved' | 'denied';
247
- export type ApproveAccessRequestBody = {
255
+ /**
256
+ * Request for approving an app access request
257
+ */
258
+ export type ApproveAccessRequest = {
248
259
  /**
249
260
  * Role to grant for the approved request (scope_user_user or scope_user_power_user)
250
261
  */
@@ -286,6 +297,15 @@ export type AuthCallbackRequest = {
286
297
  error_description?: string | null;
287
298
  [key: string]: string | (string | null) | (string | null) | (string | null) | (string | null) | undefined;
288
299
  };
300
+ /**
301
+ * Request body for initiating OAuth authentication
302
+ */
303
+ export type AuthInitiateRequest = {
304
+ /**
305
+ * The OAuth client_id of the tenant to authenticate with
306
+ */
307
+ client_id: string;
308
+ };
289
309
  /**
290
310
  * Change user role request
291
311
  */
@@ -293,7 +313,7 @@ export type ChangeRoleRequest = {
293
313
  /**
294
314
  * Role to assign to the user
295
315
  */
296
- role: string;
316
+ role: ResourceRole;
297
317
  };
298
318
  export type ChatChoice = {
299
319
  /**
@@ -756,7 +776,10 @@ export type ContextLimits = {
756
776
  export type CopyAliasRequest = {
757
777
  alias: string;
758
778
  };
759
- export type CreateAccessRequestBody = {
779
+ /**
780
+ * Request for creating an app access request
781
+ */
782
+ export type CreateAccessRequest = {
760
783
  /**
761
784
  * App client ID from Keycloak
762
785
  */
@@ -789,60 +812,10 @@ export type CreateAccessRequestResponse = {
789
812
  */
790
813
  review_url: string;
791
814
  };
792
- export type CreateAliasRequest = {
793
- alias: string;
794
- repo: string;
795
- filename: string;
796
- snapshot?: string | null;
797
- request_params?: null | OaiRequestParams;
798
- context_params?: Array<string> | null;
799
- };
800
- /**
801
- * Request to create a new API model configuration
802
- */
803
- export type CreateApiModelRequest = {
804
- /**
805
- * API format/protocol (e.g., "openai")
806
- */
807
- api_format: ApiFormat;
808
- /**
809
- * API base URL
810
- */
811
- base_url: string;
812
- /**
813
- * API key for authentication (null for public APIs)
814
- */
815
- api_key?: ApiKey;
816
- /**
817
- * List of available models
818
- */
819
- models: Array<string>;
820
- /**
821
- * Optional prefix for model namespacing (e.g., "azure/" for "azure/gpt-4", "openai:" for "openai:gpt-4")
822
- */
823
- prefix?: string | null;
824
- /**
825
- * Whether to forward all requests with this prefix (true) or only selected models (false)
826
- */
827
- forward_all_with_prefix?: boolean;
828
- };
829
- /**
830
- * Request to create a new API token
831
- */
832
- export type CreateApiTokenRequest = {
833
- /**
834
- * Descriptive name for the API token (minimum 3 characters)
835
- */
836
- name?: string | null;
837
- /**
838
- * Token scope defining access level
839
- */
840
- scope: TokenScope;
841
- };
842
815
  /**
843
816
  * Wrapper for creating auth configs with server_id in body instead of path
844
817
  */
845
- export type CreateAuthConfigBody = CreateMcpAuthConfigRequest & {
818
+ export type CreateAuthConfig = CreateMcpAuthConfigRequest & {
846
819
  mcp_server_id: string;
847
820
  };
848
821
  export type CreateChatCompletionRequest = {
@@ -1163,48 +1136,22 @@ export type CreateMcpAuthConfigRequest = {
1163
1136
  client_id_issued_at?: number | null;
1164
1137
  type: 'oauth';
1165
1138
  };
1166
- export type CreateMcpRequest = {
1139
+ export type CreateTenantRequest = {
1167
1140
  name: string;
1168
- slug: string;
1169
- mcp_server_id: string;
1170
1141
  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
1142
  };
1177
- export type CreateMcpServerRequest = {
1178
- url: string;
1179
- name: string;
1180
- description?: string | null;
1181
- enabled: boolean;
1182
- auth_config?: null | CreateMcpAuthConfigRequest;
1143
+ export type CreateTenantResponse = {
1144
+ client_id: string;
1183
1145
  };
1184
- /**
1185
- * Request to create a toolset
1186
- */
1187
- export type CreateToolsetRequest = {
1146
+ export type CreateTokenRequest = {
1188
1147
  /**
1189
- * Toolset type identifier (e.g., "builtin-exa-search")
1148
+ * Descriptive name for the API token
1190
1149
  */
1191
- toolset_type: string;
1192
- /**
1193
- * User-defined slug for this toolset (1-24 chars, alphanumeric + hyphens)
1194
- */
1195
- slug: string;
1196
- /**
1197
- * Optional description for this toolset
1198
- */
1199
- description?: string | null;
1200
- /**
1201
- * Whether this toolset is enabled
1202
- */
1203
- enabled?: boolean;
1150
+ name?: string | null;
1204
1151
  /**
1205
- * API key for the toolset
1152
+ * Token scope defining access level
1206
1153
  */
1207
- api_key: string;
1154
+ scope: TokenScope;
1208
1155
  };
1209
1156
  export type CustomGrammarFormatParam = {
1210
1157
  /**
@@ -1255,17 +1202,18 @@ export type CustomToolPropertiesFormat = {
1255
1202
  grammar: CustomGrammarFormatParam;
1256
1203
  type: 'grammar';
1257
1204
  };
1205
+ export type DeploymentMode = 'standalone' | 'multi_tenant';
1258
1206
  export type DownloadRequest = {
1259
1207
  id: string;
1260
1208
  repo: string;
1261
1209
  filename: string;
1262
1210
  status: DownloadStatus;
1263
1211
  error?: string | null;
1212
+ total_bytes?: number | null;
1213
+ downloaded_bytes: number;
1214
+ started_at?: string | null;
1264
1215
  created_at: string;
1265
1216
  updated_at: string;
1266
- total_bytes?: number | null;
1267
- downloaded_bytes?: number;
1268
- started_at: string;
1269
1217
  };
1270
1218
  export type DownloadStatus = 'pending' | 'completed' | 'error';
1271
1219
  export type Duration = string;
@@ -1477,7 +1425,7 @@ export type ListMcpServersResponse = {
1477
1425
  mcp_servers: Array<McpServerResponse>;
1478
1426
  };
1479
1427
  export type ListMcpsResponse = {
1480
- mcps: Array<McpResponse>;
1428
+ mcps: Array<Mcp>;
1481
1429
  };
1482
1430
  export type ListModelResponse = {
1483
1431
  object: string;
@@ -1497,12 +1445,16 @@ export type ListToolsetsResponse = {
1497
1445
  toolset_types: Array<AppToolsetConfig>;
1498
1446
  };
1499
1447
  /**
1500
- * List users query parameters
1448
+ * List users query parameters. Intentionally omits sort fields (unlike PaginationSortParams)
1449
+ * because user listing is fetched from the auth service which handles its own ordering.
1501
1450
  */
1502
1451
  export type ListUsersParams = {
1503
1452
  page?: number | null;
1504
1453
  page_size?: number | null;
1505
1454
  };
1455
+ /**
1456
+ * Local model file response
1457
+ */
1506
1458
  export type LocalModelResponse = {
1507
1459
  repo: string;
1508
1460
  filename: string;
@@ -1583,7 +1535,6 @@ export type McpAuthConfigResponse = {
1583
1535
  mcp_server_id: string;
1584
1536
  header_key: string;
1585
1537
  has_header_value: boolean;
1586
- created_by: string;
1587
1538
  created_at: string;
1588
1539
  updated_at: string;
1589
1540
  type: 'header';
@@ -1601,7 +1552,6 @@ export type McpAuthConfigResponse = {
1601
1552
  token_endpoint_auth_method?: string | null;
1602
1553
  has_client_secret: boolean;
1603
1554
  has_registration_access_token: boolean;
1604
- created_by: string;
1605
1555
  created_at: string;
1606
1556
  updated_at: string;
1607
1557
  type: 'oauth';
@@ -1623,19 +1573,46 @@ export type McpExecuteResponse = {
1623
1573
  export type McpInstance = {
1624
1574
  id: string;
1625
1575
  };
1626
- export type McpResponse = {
1627
- id: string;
1628
- mcp_server: McpServerInfo;
1629
- slug: string;
1576
+ /**
1577
+ * Input for creating or updating an MCP instance.
1578
+ */
1579
+ export type McpRequest = {
1580
+ /**
1581
+ * Human-readable name (required)
1582
+ */
1630
1583
  name: string;
1584
+ /**
1585
+ * User-defined slug for this instance (1-24 chars, alphanumeric + hyphens)
1586
+ */
1587
+ slug: string;
1588
+ /**
1589
+ * MCP server ID (required for create, ignored for update)
1590
+ */
1591
+ mcp_server_id?: string | null;
1592
+ /**
1593
+ * Optional description
1594
+ */
1631
1595
  description?: string | null;
1596
+ /**
1597
+ * Whether this instance is enabled
1598
+ */
1632
1599
  enabled: boolean;
1600
+ /**
1601
+ * Cached tool schemas from the MCP server (JSON array)
1602
+ */
1633
1603
  tools_cache?: Array<McpTool> | null;
1604
+ /**
1605
+ * Whitelisted tool names
1606
+ */
1634
1607
  tools_filter?: Array<string> | null;
1635
- auth_type: McpAuthType;
1608
+ /**
1609
+ * Authentication type
1610
+ */
1611
+ auth_type?: McpAuthType;
1612
+ /**
1613
+ * Reference to auth config
1614
+ */
1636
1615
  auth_uuid?: string | null;
1637
- created_at: string;
1638
- updated_at: string;
1639
1616
  };
1640
1617
  /**
1641
1618
  * Admin-managed MCP server registry entry.
@@ -1688,21 +1665,34 @@ export type McpServerInfo = {
1688
1665
  name: string;
1689
1666
  enabled: boolean;
1690
1667
  };
1668
+ /**
1669
+ * Input for creating or updating an MCP server.
1670
+ */
1691
1671
  export type McpServerRequest = {
1672
+ /**
1673
+ * MCP server endpoint URL (trimmed, case-insensitive unique)
1674
+ */
1692
1675
  url: string;
1693
- };
1694
- export type McpServerResponse = {
1695
- id: string;
1696
- url: string;
1676
+ /**
1677
+ * Human-readable display name
1678
+ */
1697
1679
  name: string;
1680
+ /**
1681
+ * Optional description
1682
+ */
1698
1683
  description?: string | null;
1684
+ /**
1685
+ * Whether this MCP server is enabled
1686
+ */
1699
1687
  enabled: boolean;
1700
- created_by: string;
1701
- updated_by: string;
1688
+ auth_config?: null | CreateMcpAuthConfigRequest;
1689
+ };
1690
+ /**
1691
+ * MCP server response with computed mcp counts and optional auth config.
1692
+ */
1693
+ export type McpServerResponse = McpServer & {
1702
1694
  enabled_mcp_count: number;
1703
1695
  disabled_mcp_count: number;
1704
- created_at: string;
1705
- updated_at: string;
1706
1696
  auth_config?: null | McpAuthConfigResponse;
1707
1697
  };
1708
1698
  export type McpServerReviewInfo = {
@@ -1820,7 +1810,7 @@ export type ModelsResponse = {
1820
1810
  models: Array<OllamaModel>;
1821
1811
  };
1822
1812
  /**
1823
- * Request to pull a model file from HuggingFace
1813
+ * Request for creating a new download request
1824
1814
  */
1825
1815
  export type NewDownloadRequest = {
1826
1816
  /**
@@ -1879,7 +1869,7 @@ export type OAuthTokenResponse = {
1879
1869
  expires_at?: number | null;
1880
1870
  has_access_token: boolean;
1881
1871
  has_refresh_token: boolean;
1882
- created_by: string;
1872
+ user_id: string;
1883
1873
  created_at: string;
1884
1874
  updated_at: string;
1885
1875
  };
@@ -1930,6 +1920,9 @@ export type Options = {
1930
1920
  use_mlock?: boolean | null;
1931
1921
  num_thread?: number | null;
1932
1922
  };
1923
+ /**
1924
+ * Paginated list of all model aliases (user, model, and API)
1925
+ */
1933
1926
  export type PaginatedAliasResponse = {
1934
1927
  data: Array<AliasResponse>;
1935
1928
  total: number;
@@ -1939,30 +1932,36 @@ export type PaginatedAliasResponse = {
1939
1932
  /**
1940
1933
  * Paginated response for API model listings
1941
1934
  */
1942
- export type PaginatedApiModelResponse = {
1943
- data: Array<ApiModelResponse>;
1944
- total: number;
1945
- page: number;
1946
- page_size: number;
1947
- };
1948
- export type PaginatedApiTokenResponse = {
1949
- data: Array<ApiToken>;
1935
+ export type PaginatedApiModelOutput = {
1936
+ data: Array<ApiModelOutput>;
1950
1937
  total: number;
1951
1938
  page: number;
1952
1939
  page_size: number;
1953
1940
  };
1941
+ /**
1942
+ * Paginated list of download requests
1943
+ */
1954
1944
  export type PaginatedDownloadResponse = {
1955
1945
  data: Array<DownloadRequest>;
1956
1946
  total: number;
1957
1947
  page: number;
1958
1948
  page_size: number;
1959
1949
  };
1950
+ /**
1951
+ * Paginated list of local model files
1952
+ */
1960
1953
  export type PaginatedLocalModelResponse = {
1961
1954
  data: Array<LocalModelResponse>;
1962
1955
  total: number;
1963
1956
  page: number;
1964
1957
  page_size: number;
1965
1958
  };
1959
+ export type PaginatedTokenResponse = {
1960
+ data: Array<TokenDetail>;
1961
+ total: number;
1962
+ page: number;
1963
+ page_size: number;
1964
+ };
1966
1965
  /**
1967
1966
  * Paginated response for access requests
1968
1967
  */
@@ -1984,6 +1983,9 @@ export type PaginatedUserAccessResponse = {
1984
1983
  */
1985
1984
  page_size: number;
1986
1985
  };
1986
+ /**
1987
+ * Paginated list of user-defined model aliases
1988
+ */
1987
1989
  export type PaginatedUserAliasResponse = {
1988
1990
  data: Array<UserAliasResponse>;
1989
1991
  total: number;
@@ -2106,9 +2108,12 @@ export type RefreshSource = 'all' | 'model';
2106
2108
  * OAuth 2.1 registration type: pre-registered client or dynamic client registration (DCR).
2107
2109
  */
2108
2110
  export type RegistrationType = 'pre_registered' | 'dynamic_registration';
2111
+ export type RequestedMcpServer = {
2112
+ url: string;
2113
+ };
2109
2114
  export type RequestedResources = {
2110
2115
  toolset_types?: Array<ToolsetTypeRequest>;
2111
- mcp_servers?: Array<McpServerRequest>;
2116
+ mcp_servers?: Array<RequestedMcpServer>;
2112
2117
  };
2113
2118
  export type ResourceRole = 'resource_user' | 'resource_power_user' | 'resource_manager' | 'resource_admin';
2114
2119
  export type ResponseFormat = {
@@ -2208,6 +2213,16 @@ export type ShowResponse = {
2208
2213
  template: string;
2209
2214
  };
2210
2215
  export type StopConfiguration = string | Array<string>;
2216
+ export type TenantListItem = {
2217
+ client_id: string;
2218
+ name: string;
2219
+ description?: string | null;
2220
+ is_active: boolean;
2221
+ logged_in: boolean;
2222
+ };
2223
+ export type TenantListResponse = {
2224
+ tenants: Array<TenantListItem>;
2225
+ };
2211
2226
  /**
2212
2227
  * Credentials for test/fetch operations
2213
2228
  */
@@ -2253,6 +2268,22 @@ export type TestPromptResponse = {
2253
2268
  response?: string | null;
2254
2269
  error?: string | null;
2255
2270
  };
2271
+ export type TokenCreated = {
2272
+ /**
2273
+ * API token with bodhiapp_ prefix for programmatic access
2274
+ */
2275
+ token: string;
2276
+ };
2277
+ export type TokenDetail = {
2278
+ id: string;
2279
+ user_id: string;
2280
+ name: string;
2281
+ token_prefix: string;
2282
+ scopes: string;
2283
+ status: TokenStatus;
2284
+ created_at: string;
2285
+ updated_at: string;
2286
+ };
2256
2287
  /**
2257
2288
  * API Token information response
2258
2289
  */
@@ -2379,6 +2410,31 @@ export type ToolsetExecutionResponse = {
2379
2410
  export type ToolsetInstance = {
2380
2411
  id: string;
2381
2412
  };
2413
+ /**
2414
+ * Input for creating or updating a toolset instance.
2415
+ */
2416
+ export type ToolsetRequest = {
2417
+ /**
2418
+ * Toolset type identifier (required for create, ignored for update)
2419
+ */
2420
+ toolset_type?: string | null;
2421
+ /**
2422
+ * User-defined slug for this instance (1-24 chars, alphanumeric + hyphens)
2423
+ */
2424
+ slug: string;
2425
+ /**
2426
+ * Optional description for this instance
2427
+ */
2428
+ description?: string | null;
2429
+ /**
2430
+ * Whether this instance is enabled
2431
+ */
2432
+ enabled?: boolean;
2433
+ /**
2434
+ * API key update action (Keep or Set)
2435
+ */
2436
+ api_key?: ApiKeyUpdate;
2437
+ };
2382
2438
  /**
2383
2439
  * Toolset response
2384
2440
  */
@@ -2437,71 +2493,6 @@ export type TopLogprobs = {
2437
2493
  */
2438
2494
  bytes?: Array<number> | null;
2439
2495
  };
2440
- export type UpdateAliasRequest = {
2441
- repo: string;
2442
- filename: string;
2443
- snapshot?: string | null;
2444
- request_params?: null | OaiRequestParams;
2445
- context_params?: Array<string> | null;
2446
- };
2447
- /**
2448
- * Request to update an existing API model configuration
2449
- */
2450
- export type UpdateApiModelRequest = {
2451
- /**
2452
- * API format/protocol (required)
2453
- */
2454
- api_format: ApiFormat;
2455
- /**
2456
- * API base URL (required)
2457
- */
2458
- base_url: string;
2459
- /**
2460
- * API key update action (Keep/Set with Some or None)
2461
- */
2462
- api_key?: ApiKeyUpdateAction;
2463
- /**
2464
- * List of available models (required)
2465
- */
2466
- models: Array<string>;
2467
- /**
2468
- * Optional prefix for model namespacing
2469
- */
2470
- prefix?: string | null;
2471
- /**
2472
- * Whether to forward all requests with this prefix (true) or only selected models (false)
2473
- */
2474
- forward_all_with_prefix?: boolean;
2475
- };
2476
- /**
2477
- * Request to update an existing API token
2478
- */
2479
- export type UpdateApiTokenRequest = {
2480
- /**
2481
- * New descriptive name for the token (minimum 3 characters)
2482
- */
2483
- name: string;
2484
- /**
2485
- * New status for the token (active/inactive)
2486
- */
2487
- status: TokenStatus;
2488
- };
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
2496
  /**
2506
2497
  * Request to update a setting value
2507
2498
  */
@@ -2511,26 +2502,15 @@ export type UpdateSettingRequest = {
2511
2502
  */
2512
2503
  value: unknown;
2513
2504
  };
2514
- /**
2515
- * Request to update a toolset (full PUT - all fields required except api_key)
2516
- */
2517
- export type UpdateToolsetRequest = {
2505
+ export type UpdateTokenRequest = {
2518
2506
  /**
2519
- * User-defined slug for this toolset
2520
- */
2521
- slug: string;
2522
- /**
2523
- * Optional description for this toolset
2507
+ * New descriptive name for the token
2524
2508
  */
2525
- description?: string | null;
2526
- /**
2527
- * Whether this toolset is enabled
2528
- */
2529
- enabled: boolean;
2509
+ name: string;
2530
2510
  /**
2531
- * API key update action (Keep or Set)
2511
+ * New status for the token (active/inactive)
2532
2512
  */
2533
- api_key?: ApiKeyUpdateDto;
2513
+ status: TokenStatus;
2534
2514
  };
2535
2515
  export type UrlCitation = {
2536
2516
  /**
@@ -2550,6 +2530,9 @@ export type UrlCitation = {
2550
2530
  */
2551
2531
  url: string;
2552
2532
  };
2533
+ /**
2534
+ * User access request output type for API responses
2535
+ */
2553
2536
  export type UserAccessRequest = {
2554
2537
  id: string;
2555
2538
  username: string;
@@ -2592,6 +2575,35 @@ export type UserAlias = {
2592
2575
  created_at: string;
2593
2576
  updated_at: string;
2594
2577
  };
2578
+ /**
2579
+ * Input request for creating or updating a user model alias.
2580
+ */
2581
+ export type UserAliasRequest = {
2582
+ /**
2583
+ * Alias name — unique per (tenant_id, user_id) scope
2584
+ */
2585
+ alias: string;
2586
+ /**
2587
+ * Repository in format "user/repo"
2588
+ */
2589
+ repo: string;
2590
+ /**
2591
+ * Filename of the GGUF model
2592
+ */
2593
+ filename: string;
2594
+ /**
2595
+ * Snapshot/commit identifier (optional — defaults to latest available)
2596
+ */
2597
+ snapshot?: string | null;
2598
+ request_params?: null | OaiRequestParams;
2599
+ /**
2600
+ * Context parameters for the model
2601
+ */
2602
+ context_params?: Array<string> | null;
2603
+ };
2604
+ /**
2605
+ * User-defined model alias response
2606
+ */
2595
2607
  export type UserAliasResponse = {
2596
2608
  id: string;
2597
2609
  alias: string;
@@ -2613,6 +2625,15 @@ export type UserInfo = {
2613
2625
  last_name?: string | null;
2614
2626
  role?: null | AppRole;
2615
2627
  };
2628
+ /**
2629
+ * Envelope wrapping UserResponse with additional session info
2630
+ */
2631
+ export type UserInfoEnvelope = UserResponse & {
2632
+ /**
2633
+ * Whether the user has an active dashboard session (only present when true)
2634
+ */
2635
+ has_dashboard_session?: boolean;
2636
+ };
2616
2637
  export type UserListResponse = {
2617
2638
  client_id: string;
2618
2639
  users: Array<UserInfo>;
@@ -2929,7 +2950,7 @@ export type ApproveAppsAccessRequestData = {
2929
2950
  /**
2930
2951
  * Approval details with tool selections
2931
2952
  */
2932
- body: ApproveAccessRequestBody;
2953
+ body: ApproveAccessRequest;
2933
2954
  path: {
2934
2955
  /**
2935
2956
  * Access request ID
@@ -3149,11 +3170,11 @@ export type ListApiModelsResponses = {
3149
3170
  /**
3150
3171
  * API model configurations retrieved successfully
3151
3172
  */
3152
- 200: PaginatedApiModelResponse;
3173
+ 200: PaginatedApiModelOutput;
3153
3174
  };
3154
3175
  export type ListApiModelsResponse = ListApiModelsResponses[keyof ListApiModelsResponses];
3155
3176
  export type CreateApiModelData = {
3156
- body: CreateApiModelRequest;
3177
+ body: ApiModelRequest;
3157
3178
  path?: never;
3158
3179
  query?: never;
3159
3180
  url: '/bodhi/v1/api-models';
@@ -3185,7 +3206,7 @@ export type CreateApiModelResponses = {
3185
3206
  /**
3186
3207
  * API model created
3187
3208
  */
3188
- 201: ApiModelResponse;
3209
+ 201: ApiModelOutput;
3189
3210
  };
3190
3211
  export type CreateApiModelResponse = CreateApiModelResponses[keyof CreateApiModelResponses];
3191
3212
  export type GetApiFormatsData = {
@@ -3363,11 +3384,11 @@ export type GetApiModelResponses = {
3363
3384
  /**
3364
3385
  * API model configuration retrieved successfully
3365
3386
  */
3366
- 200: ApiModelResponse;
3387
+ 200: ApiModelOutput;
3367
3388
  };
3368
3389
  export type GetApiModelResponse = GetApiModelResponses[keyof GetApiModelResponses];
3369
3390
  export type UpdateApiModelData = {
3370
- body: UpdateApiModelRequest;
3391
+ body: ApiModelRequest;
3371
3392
  path: {
3372
3393
  /**
3373
3394
  * API model ID
@@ -3404,7 +3425,7 @@ export type UpdateApiModelResponses = {
3404
3425
  /**
3405
3426
  * API model updated
3406
3427
  */
3407
- 200: ApiModelResponse;
3428
+ 200: ApiModelOutput;
3408
3429
  };
3409
3430
  export type UpdateApiModelResponse = UpdateApiModelResponses[keyof UpdateApiModelResponses];
3410
3431
  export type SyncModelsData = {
@@ -3445,7 +3466,7 @@ export type SyncModelsResponses = {
3445
3466
  /**
3446
3467
  * Models synced to cache successfully
3447
3468
  */
3448
- 200: ApiModelResponse;
3469
+ 200: ApiModelOutput;
3449
3470
  };
3450
3471
  export type SyncModelsResponse = SyncModelsResponses[keyof SyncModelsResponses];
3451
3472
  export type GetAccessRequestStatusData = {
@@ -3498,7 +3519,7 @@ export type CreateAccessRequestData = {
3498
3519
  /**
3499
3520
  * Access request details
3500
3521
  */
3501
- body: CreateAccessRequestBody;
3522
+ body: CreateAccessRequest;
3502
3523
  path?: never;
3503
3524
  query?: never;
3504
3525
  url: '/bodhi/v1/apps/request-access';
@@ -3572,10 +3593,84 @@ export type CompleteOAuthFlowResponses = {
3572
3593
  200: RedirectResponse;
3573
3594
  };
3574
3595
  export type CompleteOAuthFlowResponse = CompleteOAuthFlowResponses[keyof CompleteOAuthFlowResponses];
3575
- export type InitiateOAuthFlowData = {
3596
+ export type CompleteDashboardOAuthFlowData = {
3597
+ /**
3598
+ * OAuth callback parameters from authorization server
3599
+ */
3600
+ body: AuthCallbackRequest;
3601
+ path?: never;
3602
+ query?: never;
3603
+ url: '/bodhi/v1/auth/dashboard/callback';
3604
+ };
3605
+ export type CompleteDashboardOAuthFlowErrors = {
3606
+ /**
3607
+ * Invalid request parameters
3608
+ */
3609
+ 400: OpenAiApiError;
3610
+ /**
3611
+ * Not authenticated
3612
+ */
3613
+ 401: OpenAiApiError;
3614
+ /**
3615
+ * Insufficient permissions
3616
+ */
3617
+ 403: OpenAiApiError;
3618
+ /**
3619
+ * Internal server error
3620
+ */
3621
+ 500: OpenAiApiError;
3622
+ };
3623
+ export type CompleteDashboardOAuthFlowError = CompleteDashboardOAuthFlowErrors[keyof CompleteDashboardOAuthFlowErrors];
3624
+ export type CompleteDashboardOAuthFlowResponses = {
3625
+ /**
3626
+ * Dashboard OAuth flow completed successfully
3627
+ */
3628
+ 200: RedirectResponse;
3629
+ };
3630
+ export type CompleteDashboardOAuthFlowResponse = CompleteDashboardOAuthFlowResponses[keyof CompleteDashboardOAuthFlowResponses];
3631
+ export type InitiateDashboardOAuthFlowData = {
3576
3632
  body: unknown;
3577
3633
  path?: never;
3578
3634
  query?: never;
3635
+ url: '/bodhi/v1/auth/dashboard/initiate';
3636
+ };
3637
+ export type InitiateDashboardOAuthFlowErrors = {
3638
+ /**
3639
+ * Invalid request parameters
3640
+ */
3641
+ 400: OpenAiApiError;
3642
+ /**
3643
+ * Not authenticated
3644
+ */
3645
+ 401: OpenAiApiError;
3646
+ /**
3647
+ * Insufficient permissions
3648
+ */
3649
+ 403: OpenAiApiError;
3650
+ /**
3651
+ * Internal server error
3652
+ */
3653
+ 500: OpenAiApiError;
3654
+ };
3655
+ export type InitiateDashboardOAuthFlowError = InitiateDashboardOAuthFlowErrors[keyof InitiateDashboardOAuthFlowErrors];
3656
+ export type InitiateDashboardOAuthFlowResponses = {
3657
+ /**
3658
+ * User already has a valid dashboard token
3659
+ */
3660
+ 200: RedirectResponse;
3661
+ /**
3662
+ * OAuth authorization URL provided for dashboard login
3663
+ */
3664
+ 201: RedirectResponse;
3665
+ };
3666
+ export type InitiateDashboardOAuthFlowResponse = InitiateDashboardOAuthFlowResponses[keyof InitiateDashboardOAuthFlowResponses];
3667
+ export type InitiateOAuthFlowData = {
3668
+ /**
3669
+ * OAuth initiate parameters
3670
+ */
3671
+ body: AuthInitiateRequest;
3672
+ path?: never;
3673
+ query?: never;
3579
3674
  url: '/bodhi/v1/auth/initiate';
3580
3675
  };
3581
3676
  export type InitiateOAuthFlowErrors = {
@@ -3697,7 +3792,7 @@ export type ListMcpsResponses = {
3697
3792
  };
3698
3793
  export type ListMcpsResponse2 = ListMcpsResponses[keyof ListMcpsResponses];
3699
3794
  export type CreateMcpData = {
3700
- body: CreateMcpRequest;
3795
+ body: McpRequest;
3701
3796
  path?: never;
3702
3797
  query?: never;
3703
3798
  url: '/bodhi/v1/mcps';
@@ -3725,7 +3820,7 @@ export type CreateMcpResponses = {
3725
3820
  /**
3726
3821
  * MCP created
3727
3822
  */
3728
- 201: McpResponse;
3823
+ 201: Mcp;
3729
3824
  };
3730
3825
  export type CreateMcpResponse = CreateMcpResponses[keyof CreateMcpResponses];
3731
3826
  export type ListMcpAuthConfigsData = {
@@ -3763,7 +3858,7 @@ export type ListMcpAuthConfigsResponses = {
3763
3858
  };
3764
3859
  export type ListMcpAuthConfigsResponse = ListMcpAuthConfigsResponses[keyof ListMcpAuthConfigsResponses];
3765
3860
  export type CreateMcpAuthConfigData = {
3766
- body: CreateAuthConfigBody;
3861
+ body: CreateAuthConfig;
3767
3862
  path?: never;
3768
3863
  query?: never;
3769
3864
  url: '/bodhi/v1/mcps/auth-configs';
@@ -4210,7 +4305,7 @@ export type ListMcpServersResponses = {
4210
4305
  };
4211
4306
  export type ListMcpServersResponse2 = ListMcpServersResponses[keyof ListMcpServersResponses];
4212
4307
  export type CreateMcpServerData = {
4213
- body: CreateMcpServerRequest;
4308
+ body: McpServerRequest;
4214
4309
  path?: never;
4215
4310
  query?: never;
4216
4311
  url: '/bodhi/v1/mcps/servers';
@@ -4287,7 +4382,7 @@ export type GetMcpServerResponses = {
4287
4382
  };
4288
4383
  export type GetMcpServerResponse = GetMcpServerResponses[keyof GetMcpServerResponses];
4289
4384
  export type UpdateMcpServerData = {
4290
- body: UpdateMcpServerRequest;
4385
+ body: McpServerRequest;
4291
4386
  path: {
4292
4387
  /**
4293
4388
  * MCP server UUID
@@ -4410,11 +4505,11 @@ export type GetMcpResponses = {
4410
4505
  /**
4411
4506
  * MCP instance
4412
4507
  */
4413
- 200: McpResponse;
4508
+ 200: Mcp;
4414
4509
  };
4415
4510
  export type GetMcpResponse = GetMcpResponses[keyof GetMcpResponses];
4416
4511
  export type UpdateMcpData = {
4417
- body: UpdateMcpRequest;
4512
+ body: McpRequest;
4418
4513
  path: {
4419
4514
  /**
4420
4515
  * MCP instance UUID
@@ -4451,7 +4546,7 @@ export type UpdateMcpResponses = {
4451
4546
  /**
4452
4547
  * MCP updated
4453
4548
  */
4454
- 200: McpResponse;
4549
+ 200: Mcp;
4455
4550
  };
4456
4551
  export type UpdateMcpResponse = UpdateMcpResponses[keyof UpdateMcpResponses];
4457
4552
  export type RefreshMcpToolsData = {
@@ -4768,7 +4863,7 @@ export type ListAllModelsResponses = {
4768
4863
  };
4769
4864
  export type ListAllModelsResponse = ListAllModelsResponses[keyof ListAllModelsResponses];
4770
4865
  export type CreateAliasData = {
4771
- body: CreateAliasRequest;
4866
+ body: UserAliasRequest;
4772
4867
  path?: never;
4773
4868
  query?: never;
4774
4869
  url: '/bodhi/v1/models';
@@ -4924,7 +5019,7 @@ export type GetAliasResponses = {
4924
5019
  };
4925
5020
  export type GetAliasResponse = GetAliasResponses[keyof GetAliasResponses];
4926
5021
  export type UpdateAliasData = {
4927
- body: UpdateAliasRequest;
5022
+ body: UserAliasRequest;
4928
5023
  path: {
4929
5024
  /**
4930
5025
  * UUID of the alias to update
@@ -5182,6 +5277,109 @@ export type SetupAppResponses = {
5182
5277
  200: SetupResponse;
5183
5278
  };
5184
5279
  export type SetupAppResponse = SetupAppResponses[keyof SetupAppResponses];
5280
+ export type TenantsListData = {
5281
+ body?: never;
5282
+ path?: never;
5283
+ query?: never;
5284
+ url: '/bodhi/v1/tenants';
5285
+ };
5286
+ export type TenantsListErrors = {
5287
+ /**
5288
+ * Invalid request parameters
5289
+ */
5290
+ 400: OpenAiApiError;
5291
+ /**
5292
+ * Not authenticated
5293
+ */
5294
+ 401: OpenAiApiError;
5295
+ /**
5296
+ * Insufficient permissions
5297
+ */
5298
+ 403: OpenAiApiError;
5299
+ /**
5300
+ * Internal server error
5301
+ */
5302
+ 500: OpenAiApiError;
5303
+ };
5304
+ export type TenantsListError = TenantsListErrors[keyof TenantsListErrors];
5305
+ export type TenantsListResponses = {
5306
+ /**
5307
+ * List of tenants
5308
+ */
5309
+ 200: TenantListResponse;
5310
+ };
5311
+ export type TenantsListResponse = TenantsListResponses[keyof TenantsListResponses];
5312
+ export type TenantsCreateData = {
5313
+ /**
5314
+ * Tenant creation parameters
5315
+ */
5316
+ body: CreateTenantRequest;
5317
+ path?: never;
5318
+ query?: never;
5319
+ url: '/bodhi/v1/tenants';
5320
+ };
5321
+ export type TenantsCreateErrors = {
5322
+ /**
5323
+ * Invalid request parameters
5324
+ */
5325
+ 400: OpenAiApiError;
5326
+ /**
5327
+ * Not authenticated
5328
+ */
5329
+ 401: OpenAiApiError;
5330
+ /**
5331
+ * Insufficient permissions
5332
+ */
5333
+ 403: OpenAiApiError;
5334
+ /**
5335
+ * Internal server error
5336
+ */
5337
+ 500: OpenAiApiError;
5338
+ };
5339
+ export type TenantsCreateError = TenantsCreateErrors[keyof TenantsCreateErrors];
5340
+ export type TenantsCreateResponses = {
5341
+ /**
5342
+ * Tenant created successfully
5343
+ */
5344
+ 201: CreateTenantResponse;
5345
+ };
5346
+ export type TenantsCreateResponse = TenantsCreateResponses[keyof TenantsCreateResponses];
5347
+ export type TenantsActivateData = {
5348
+ body?: never;
5349
+ path: {
5350
+ /**
5351
+ * The client_id of the tenant to activate
5352
+ */
5353
+ client_id: string;
5354
+ };
5355
+ query?: never;
5356
+ url: '/bodhi/v1/tenants/{client_id}/activate';
5357
+ };
5358
+ export type TenantsActivateErrors = {
5359
+ /**
5360
+ * Invalid request parameters
5361
+ */
5362
+ 400: OpenAiApiError;
5363
+ /**
5364
+ * Not authenticated
5365
+ */
5366
+ 401: OpenAiApiError;
5367
+ /**
5368
+ * Insufficient permissions
5369
+ */
5370
+ 403: OpenAiApiError;
5371
+ /**
5372
+ * Internal server error
5373
+ */
5374
+ 500: OpenAiApiError;
5375
+ };
5376
+ export type TenantsActivateError = TenantsActivateErrors[keyof TenantsActivateErrors];
5377
+ export type TenantsActivateResponses = {
5378
+ /**
5379
+ * Tenant activated successfully
5380
+ */
5381
+ 200: unknown;
5382
+ };
5185
5383
  export type ListApiTokensData = {
5186
5384
  body?: never;
5187
5385
  path?: never;
@@ -5228,14 +5426,14 @@ export type ListApiTokensResponses = {
5228
5426
  /**
5229
5427
  * List of API tokens
5230
5428
  */
5231
- 200: PaginatedApiTokenResponse;
5429
+ 200: PaginatedTokenResponse;
5232
5430
  };
5233
5431
  export type ListApiTokensResponse = ListApiTokensResponses[keyof ListApiTokensResponses];
5234
5432
  export type CreateApiTokenData = {
5235
5433
  /**
5236
5434
  * API token creation parameters
5237
5435
  */
5238
- body: CreateApiTokenRequest;
5436
+ body: CreateTokenRequest;
5239
5437
  path?: never;
5240
5438
  query?: never;
5241
5439
  url: '/bodhi/v1/tokens';
@@ -5263,14 +5461,14 @@ export type CreateApiTokenResponses = {
5263
5461
  /**
5264
5462
  * API token created successfully
5265
5463
  */
5266
- 201: ApiTokenResponse;
5464
+ 201: TokenCreated;
5267
5465
  };
5268
5466
  export type CreateApiTokenResponse = CreateApiTokenResponses[keyof CreateApiTokenResponses];
5269
5467
  export type UpdateApiTokenData = {
5270
5468
  /**
5271
5469
  * Token update request
5272
5470
  */
5273
- body: UpdateApiTokenRequest;
5471
+ body: UpdateTokenRequest;
5274
5472
  path: {
5275
5473
  /**
5276
5474
  * Unique identifier of the API token to update
@@ -5307,7 +5505,7 @@ export type UpdateApiTokenResponses = {
5307
5505
  /**
5308
5506
  * Token updated successfully
5309
5507
  */
5310
- 200: ApiToken;
5508
+ 200: TokenDetail;
5311
5509
  };
5312
5510
  export type UpdateApiTokenResponse = UpdateApiTokenResponses[keyof UpdateApiTokenResponses];
5313
5511
  export type ListToolsetTypesData = {
@@ -5457,7 +5655,7 @@ export type ListToolsetsResponses = {
5457
5655
  };
5458
5656
  export type ListToolsetsResponse2 = ListToolsetsResponses[keyof ListToolsetsResponses];
5459
5657
  export type CreateToolsetData = {
5460
- body: CreateToolsetRequest;
5658
+ body: ToolsetRequest;
5461
5659
  path?: never;
5462
5660
  query?: never;
5463
5661
  url: '/bodhi/v1/toolsets';
@@ -5575,7 +5773,7 @@ export type GetToolsetResponses = {
5575
5773
  };
5576
5774
  export type GetToolsetResponse = GetToolsetResponses[keyof GetToolsetResponses];
5577
5775
  export type UpdateToolsetData = {
5578
- body: UpdateToolsetRequest;
5776
+ body: ToolsetRequest;
5579
5777
  path: {
5580
5778
  /**
5581
5779
  * Toolset instance UUID
@@ -5693,7 +5891,7 @@ export type GetCurrentUserResponses = {
5693
5891
  /**
5694
5892
  * User information (authenticated or not)
5695
5893
  */
5696
- 200: UserResponse;
5894
+ 200: UserInfoEnvelope;
5697
5895
  };
5698
5896
  export type GetCurrentUserResponse = GetCurrentUserResponses[keyof GetCurrentUserResponses];
5699
5897
  export type RequestUserAccessData = {