From ff457a7c48a2f6b849b4ed0b2865fd811922b393 Mon Sep 17 00:00:00 2001 From: derhornspieler <15236687+derhornspieler@users.noreply.github.com> Date: Sun, 23 Aug 2026 10:30:25 -0400 Subject: [PATCH] chore(ui): add the new provider-setup endpoints to the dashboard API types The discovery and JWKS routes were missing from the generated types. Regenerating on a developer machine can drop the enterprise routes when that package is not importable, which turns the sync check into a large deletion; this spec was dumped from the built container image, so the diff is only the two added endpoints --- ui/litellm-dashboard/src/lib/http/schema.d.ts | 242 ++++++++++++++++++ 1 file changed, 242 insertions(+) diff --git a/ui/litellm-dashboard/src/lib/http/schema.d.ts b/ui/litellm-dashboard/src/lib/http/schema.d.ts index d311bfa3cbc..04f904862a1 100644 --- a/ui/litellm-dashboard/src/lib/http/schema.d.ts +++ b/ui/litellm-dashboard/src/lib/http/schema.d.ts @@ -2930,6 +2930,28 @@ export interface paths { patch: operations["update_credential_credentials__credential_name__patch"]; trace?: never; }; + "/credentials/{credential_name}/jwks": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get Credential Internal Issuer Jwks + * @description Export the public JWKS for an anthropic ``internal_issuer`` credential, so the operator can + * register it on the Anthropic federation issuer from the UI. Never touches the private signing + * key: only its derived public JWKS leaves this process. 404s for any other credential shape. + */ + get: operations["get_credential_internal_issuer_jwks_credentials__credential_name__jwks_get"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/cursor/chat/completions": { parameters: { query?: never; @@ -11403,6 +11425,26 @@ export interface paths { patch?: never; trace?: never; }; + "/provider/models/discover": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Discover Provider Models + * @description Live model discovery for a configured provider credential. Proxy-admin only. + */ + post: operations["discover_provider_models_provider_models_discover_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/public/agent_hub": { parameters: { query?: never; @@ -24786,6 +24828,8 @@ export interface components { credential_values: { [key: string]: unknown; }; + /** Credential Values To Delete */ + credential_values_to_delete?: string[] | null; }; /** * CustomerResponse @@ -25087,6 +25131,8 @@ export interface components { }; /** Deployment */ Deployment: { + /** Blocked */ + blocked?: boolean | null; litellm_params: components["schemas"]["LiteLLM_Params"]; model_info: components["schemas"]["litellm__types__router__ModelInfo"]; /** Model Name */ @@ -27393,6 +27439,40 @@ export interface components { allow_client_keepalive_override: boolean | null; /** Annotation Cost Per Page */ annotation_cost_per_page?: number | null; + /** Anthropic Federation Rule Id */ + anthropic_federation_rule_id?: string | null; + /** Anthropic Identity Source */ + anthropic_identity_source?: string | null; + /** Anthropic Identity Token */ + anthropic_identity_token?: string | null; + /** Anthropic Identity Token File */ + anthropic_identity_token_file?: string | null; + /** Anthropic Issuer Audience */ + anthropic_issuer_audience?: string | null; + /** Anthropic Issuer Signing Key Ref */ + anthropic_issuer_signing_key_ref?: string | null; + /** Anthropic Issuer Subject */ + anthropic_issuer_subject?: string | null; + /** Anthropic Issuer Ttl Seconds */ + anthropic_issuer_ttl_seconds?: number | null; + /** Anthropic Issuer Url */ + anthropic_issuer_url?: string | null; + /** Anthropic Keycloak Auth Method */ + anthropic_keycloak_auth_method?: string | null; + /** Anthropic Keycloak Client Id */ + anthropic_keycloak_client_id?: string | null; + /** Anthropic Keycloak Client Secret Ref */ + anthropic_keycloak_client_secret_ref?: string | null; + /** Anthropic Keycloak Scope */ + anthropic_keycloak_scope?: string | null; + /** Anthropic Keycloak Token Url */ + anthropic_keycloak_token_url?: string | null; + /** Anthropic Organization Id */ + anthropic_organization_id?: string | null; + /** Anthropic Service Account Id */ + anthropic_service_account_id?: string | null; + /** Anthropic Workspace Id */ + anthropic_workspace_id?: string | null; /** Api Base */ api_base?: string | null; /** Api Key */ @@ -31886,6 +31966,7 @@ export interface components { ProviderCreateInfo: { /** Credential Fields */ credential_fields: components["schemas"]["ProviderCredentialField"][]; + credential_variants?: components["schemas"]["ProviderCredentialVariants"] | null; /** Default Model Placeholder */ default_model_placeholder?: string | null; /** Litellm Provider */ @@ -31921,6 +32002,68 @@ export interface components { /** Tooltip */ tooltip?: string | null; }; + /** + * ProviderCredentialVariant + * @description One selectable auth shape for a provider, e.g. 'api_key' or 'workload identity + * federation, Keycloak'. ``field_keys`` names entries in the parent + * ``ProviderCredentialVariants.field_definitions`` to mount when this variant is active; + * ``fixed_values`` are litellm_params values the variant implies (e.g. a discriminator like + * ``anthropic_identity_source: keycloak``) and are submitted without a form field for them. + */ + ProviderCredentialVariant: { + /** Field Keys */ + field_keys: string[]; + /** Fixed Values */ + fixed_values?: { + [key: string]: string; + }; + /** Id */ + id: string; + /** Label */ + label: string; + }; + /** + * ProviderCredentialVariants + * @description Declares selectable auth variants for a provider whose credential shape branches (e.g. + * API key vs. one of several workload-identity-federation identity sources), so the field + * list itself depends on a choice the form makes, not just which fields are shown. + * + * ``field_definitions`` is the full pool of fields any variant may reference by key; + * a UI mounts only the active variant's ``field_keys``, keeping every other field both + * unmounted and unsubmitted. ``default_variant`` seeds the selector on a fresh form. + */ + ProviderCredentialVariants: { + /** Default Variant */ + default_variant: string; + /** Field Definitions */ + field_definitions: components["schemas"]["ProviderCredentialField"][]; + /** Selector Label */ + selector_label: string; + /** Variants */ + variants: components["schemas"]["ProviderCredentialVariant"][]; + }; + /** + * ProviderModelDiscoveryRequest + * @description Body for POST /provider/models/discover. Exactly one of ``litellm_credential_name`` or + * inline ``api_key``/``api_base`` names the credential to probe; extra fields are rejected + * outright rather than silently ignored, since this is a security boundary -- see + * ``reject_server_owned_wif_params`` in the handler for why. + */ + ProviderModelDiscoveryRequest: { + /** Api Base */ + api_base?: string | null; + /** Api Key */ + api_key?: string | null; + /** Custom Llm Provider */ + custom_llm_provider: string; + /** Litellm Credential Name */ + litellm_credential_name?: string | null; + }; + /** ProviderModelDiscoveryResponse */ + ProviderModelDiscoveryResponse: { + /** Models */ + models: string[]; + }; /** * ProxyChatCompletionRequest * @description Pydantic model for chat completion requests that includes both OpenAI standard fields @@ -36602,6 +36745,40 @@ export interface components { allow_client_keepalive_override: boolean | null; /** Annotation Cost Per Page */ annotation_cost_per_page?: number | null; + /** Anthropic Federation Rule Id */ + anthropic_federation_rule_id?: string | null; + /** Anthropic Identity Source */ + anthropic_identity_source?: string | null; + /** Anthropic Identity Token */ + anthropic_identity_token?: string | null; + /** Anthropic Identity Token File */ + anthropic_identity_token_file?: string | null; + /** Anthropic Issuer Audience */ + anthropic_issuer_audience?: string | null; + /** Anthropic Issuer Signing Key Ref */ + anthropic_issuer_signing_key_ref?: string | null; + /** Anthropic Issuer Subject */ + anthropic_issuer_subject?: string | null; + /** Anthropic Issuer Ttl Seconds */ + anthropic_issuer_ttl_seconds?: number | null; + /** Anthropic Issuer Url */ + anthropic_issuer_url?: string | null; + /** Anthropic Keycloak Auth Method */ + anthropic_keycloak_auth_method?: string | null; + /** Anthropic Keycloak Client Id */ + anthropic_keycloak_client_id?: string | null; + /** Anthropic Keycloak Client Secret Ref */ + anthropic_keycloak_client_secret_ref?: string | null; + /** Anthropic Keycloak Scope */ + anthropic_keycloak_scope?: string | null; + /** Anthropic Keycloak Token Url */ + anthropic_keycloak_token_url?: string | null; + /** Anthropic Organization Id */ + anthropic_organization_id?: string | null; + /** Anthropic Service Account Id */ + anthropic_service_account_id?: string | null; + /** Anthropic Workspace Id */ + anthropic_workspace_id?: string | null; /** Api Base */ api_base?: string | null; /** Api Key */ @@ -41483,6 +41660,38 @@ export interface operations { }; }; }; + get_credential_internal_issuer_jwks_credentials__credential_name__jwks_get: { + parameters: { + query?: never; + header?: never; + path: { + /** @description The credential name, percent-decoded; may contain slashes */ + credential_name: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": unknown; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; cursor_chat_completions_cursor_chat_completions_post: { parameters: { query?: never; @@ -51264,6 +51473,39 @@ export interface operations { }; }; }; + discover_provider_models_provider_models_discover_post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["ProviderModelDiscoveryRequest"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ProviderModelDiscoveryResponse"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; get_agents_public_agent_hub_get: { parameters: { query?: never;