diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/cloudzero/useCloudZeroCreate.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/cloudzero/useCloudZeroCreate.ts index e126390362..29c5ae3a0f 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/cloudzero/useCloudZeroCreate.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/cloudzero/useCloudZeroCreate.ts @@ -1,4 +1,4 @@ -import { getProxyBaseUrl } from "@/components/networking"; +import { getProxyBaseUrl, getGlobalLitellmHeaderName } from "@/components/networking"; import { useMutation } from "@tanstack/react-query"; interface CreateParams { @@ -18,7 +18,7 @@ const performCloudZeroCreate = async (accessToken: string, params: CreateParams) const response = await fetch(url, { method: "POST", headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, body: JSON.stringify({ diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/cloudzero/useCloudZeroDryRun.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/cloudzero/useCloudZeroDryRun.ts index 1ed8a14160..e00fd2a637 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/cloudzero/useCloudZeroDryRun.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/cloudzero/useCloudZeroDryRun.ts @@ -1,4 +1,4 @@ -import { getProxyBaseUrl } from "@/components/networking"; +import { getProxyBaseUrl, getGlobalLitellmHeaderName } from "@/components/networking"; import { useMutation } from "@tanstack/react-query"; interface DryRunParams { @@ -16,7 +16,7 @@ const performCloudZeroDryRun = async (accessToken: string, params: DryRunParams const response = await fetch(url, { method: "POST", headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, body: JSON.stringify({ diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/cloudzero/useCloudZeroExport.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/cloudzero/useCloudZeroExport.ts index 47d559b20d..ba9a013ecc 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/cloudzero/useCloudZeroExport.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/cloudzero/useCloudZeroExport.ts @@ -1,4 +1,4 @@ -import { getProxyBaseUrl } from "@/components/networking"; +import { getProxyBaseUrl, getGlobalLitellmHeaderName } from "@/components/networking"; import { useMutation } from "@tanstack/react-query"; interface ExportParams { @@ -16,7 +16,7 @@ const performCloudZeroExport = async (accessToken: string, params: ExportParams const response = await fetch(url, { method: "POST", headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, body: JSON.stringify({ diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/cloudzero/useCloudZeroSettings.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/cloudzero/useCloudZeroSettings.ts index 96f5ab2f94..7fd6107738 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/cloudzero/useCloudZeroSettings.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/cloudzero/useCloudZeroSettings.ts @@ -1,5 +1,5 @@ import { CloudZeroSettings } from "@/components/CloudZeroCostTracking/types"; -import { getProxyBaseUrl } from "@/components/networking"; +import { getProxyBaseUrl, getGlobalLitellmHeaderName } from "@/components/networking"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { createQueryKeys } from "../common/queryKeysFactory"; @@ -12,7 +12,7 @@ const getCloudZeroSettings = async (accessToken: string): Promise ({ proxyBaseUrl: null, + getGlobalLitellmHeaderName: vi.fn(() => "Authorization"), })); // Mock useAuthorized hook diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/router/useRouterFields.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/router/useRouterFields.ts index 589508c5dd..5fa22b4109 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/router/useRouterFields.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/router/useRouterFields.ts @@ -1,7 +1,7 @@ import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; import { useQuery, UseQueryResult } from "@tanstack/react-query"; import { createQueryKeys } from "../common/queryKeysFactory"; -import { proxyBaseUrl } from "@/components/networking"; +import { proxyBaseUrl, getGlobalLitellmHeaderName } from "@/components/networking"; export interface RouterSettingsField { field_name: string; @@ -39,7 +39,7 @@ const getRouterFields = async (accessToken: string): Promise = ({ isOpen, onC const response = await fetch("/cloudzero/settings", { method: "GET", headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, }); @@ -88,7 +89,7 @@ const CloudZeroExportModal: React.FC = ({ isOpen, onC const response = await fetch(endpoint, { method, headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, body: JSON.stringify(payload), @@ -128,7 +129,7 @@ const CloudZeroExportModal: React.FC = ({ isOpen, onC const response = await fetch("/cloudzero/export", { method: "POST", headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, body: JSON.stringify({ diff --git a/ui/litellm-dashboard/src/components/cost_tracking_settings.tsx b/ui/litellm-dashboard/src/components/cost_tracking_settings.tsx index bab61da677..75d650306e 100644 --- a/ui/litellm-dashboard/src/components/cost_tracking_settings.tsx +++ b/ui/litellm-dashboard/src/components/cost_tracking_settings.tsx @@ -15,7 +15,7 @@ import { Col, Subtitle, } from "@tremor/react"; -import { getProxyBaseUrl } from "@/components/networking"; +import { getProxyBaseUrl, getGlobalLitellmHeaderName } from "@/components/networking"; import NotificationsManager from "./molecules/notifications_manager"; interface CostTrackingSettingsProps { @@ -56,7 +56,7 @@ const CostTrackingSettings: React.FC = ({ const response = await fetch(url, { method: "GET", headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, }); @@ -86,7 +86,7 @@ const CostTrackingSettings: React.FC = ({ const response = await fetch(url, { method: "PATCH", headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, body: JSON.stringify(discountConfig), diff --git a/ui/litellm-dashboard/src/components/guardrails/edit_guardrail_form.tsx b/ui/litellm-dashboard/src/components/guardrails/edit_guardrail_form.tsx index caa197e0cd..a2cc3ad41d 100644 --- a/ui/litellm-dashboard/src/components/guardrails/edit_guardrail_form.tsx +++ b/ui/litellm-dashboard/src/components/guardrails/edit_guardrail_form.tsx @@ -2,7 +2,7 @@ import React, { useState, useEffect } from "react"; import { Form, Typography, Select, Input, Switch, Modal } from "antd"; import { Button, TextInput } from "@tremor/react"; import { guardrail_provider_map, guardrailLogoMap, getGuardrailProviders } from "./guardrail_info_helpers"; -import { getGuardrailUISettings } from "../networking"; +import { getGuardrailUISettings, getGlobalLitellmHeaderName } from "../networking"; import PiiConfiguration from "./pii_configuration"; import NotificationsManager from "../molecules/notifications_manager"; @@ -183,7 +183,7 @@ const EditGuardrailForm: React.FC = ({ const response = await fetch(url, { method: "PUT", headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, body: JSON.stringify(guardrailData), diff --git a/ui/litellm-dashboard/src/components/networking.tsx b/ui/litellm-dashboard/src/components/networking.tsx index 155a078f34..1fe72996cf 100644 --- a/ui/litellm-dashboard/src/components/networking.tsx +++ b/ui/litellm-dashboard/src/components/networking.tsx @@ -6256,7 +6256,7 @@ export const tagCreateCall = async (accessToken: string, formValues: TagNewReque method: "POST", headers: { "Content-Type": "application/json", - Authorization: `Bearer ${accessToken}`, + [globalLitellmHeaderName]: `Bearer ${accessToken}`, }, body: JSON.stringify(formValues), }); @@ -6282,7 +6282,7 @@ export const tagUpdateCall = async (accessToken: string, formValues: TagUpdateRe method: "POST", headers: { "Content-Type": "application/json", - Authorization: `Bearer ${accessToken}`, + [globalLitellmHeaderName]: `Bearer ${accessToken}`, }, body: JSON.stringify(formValues), }); @@ -6308,7 +6308,7 @@ export const tagInfoCall = async (accessToken: string, tagNames: string[]): Prom method: "POST", headers: { "Content-Type": "application/json", - Authorization: `Bearer ${accessToken}`, + [globalLitellmHeaderName]: `Bearer ${accessToken}`, }, body: JSON.stringify({ names: tagNames }), }); @@ -6334,7 +6334,7 @@ export const tagListCall = async (accessToken: string): Promise const response = await fetch(url, { method: "GET", headers: { - Authorization: `Bearer ${accessToken}`, + [globalLitellmHeaderName]: `Bearer ${accessToken}`, }, }); @@ -6360,7 +6360,7 @@ export const tagDeleteCall = async (accessToken: string, tagName: string): Promi method: "POST", headers: { "Content-Type": "application/json", - Authorization: `Bearer ${accessToken}`, + [globalLitellmHeaderName]: `Bearer ${accessToken}`, }, body: JSON.stringify({ name: tagName }), }); @@ -6452,7 +6452,7 @@ export const getTeamPermissionsCall = async (accessToken: string, teamId: string method: "GET", headers: { "Content-Type": "application/json", - Authorization: `Bearer ${accessToken}`, + [globalLitellmHeaderName]: `Bearer ${accessToken}`, }, }); @@ -6480,7 +6480,7 @@ export const teamPermissionsUpdateCall = async (accessToken: string, teamId: str method: "POST", headers: { "Content-Type": "application/json", - Authorization: `Bearer ${accessToken}`, + [globalLitellmHeaderName]: `Bearer ${accessToken}`, }, body: JSON.stringify({ team_id: teamId, @@ -6544,7 +6544,7 @@ export const vectorStoreCreateCall = async (accessToken: string, formValues: Rec method: "POST", headers: { "Content-Type": "application/json", - Authorization: `Bearer ${accessToken}`, + [globalLitellmHeaderName]: `Bearer ${accessToken}`, }, body: JSON.stringify(formValues), }); @@ -6573,7 +6573,7 @@ export const vectorStoreListCall = async ( method: "GET", headers: { "Content-Type": "application/json", - Authorization: `Bearer ${accessToken}`, + [globalLitellmHeaderName]: `Bearer ${accessToken}`, }, }); @@ -6597,7 +6597,7 @@ export const vectorStoreDeleteCall = async (accessToken: string, vectorStoreId: method: "POST", headers: { "Content-Type": "application/json", - Authorization: `Bearer ${accessToken}`, + [globalLitellmHeaderName]: `Bearer ${accessToken}`, }, body: JSON.stringify({ vector_store_id: vectorStoreId }), }); @@ -6622,7 +6622,7 @@ export const vectorStoreInfoCall = async (accessToken: string, vectorStoreId: st method: "POST", headers: { "Content-Type": "application/json", - Authorization: `Bearer ${accessToken}`, + [globalLitellmHeaderName]: `Bearer ${accessToken}`, }, body: JSON.stringify({ vector_store_id: vectorStoreId }), }); @@ -6647,7 +6647,7 @@ export const vectorStoreUpdateCall = async (accessToken: string, formValues: Rec method: "POST", headers: { "Content-Type": "application/json", - Authorization: `Bearer ${accessToken}`, + [globalLitellmHeaderName]: `Bearer ${accessToken}`, }, body: JSON.stringify(formValues), }); @@ -7768,7 +7768,7 @@ export const vectorStoreSearchCall = async ( const response = await fetch(url, { method: "POST", headers: { - Authorization: `Bearer ${accessToken}`, + [globalLitellmHeaderName]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, body: JSON.stringify({ @@ -7801,7 +7801,7 @@ export const searchToolQueryCall = async ( const response = await fetch(url, { method: "POST", headers: { - Authorization: `Bearer ${accessToken}`, + [globalLitellmHeaderName]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, body: JSON.stringify({ diff --git a/ui/litellm-dashboard/src/components/playground/chat_ui/CodeInterpreterOutput.test.tsx b/ui/litellm-dashboard/src/components/playground/chat_ui/CodeInterpreterOutput.test.tsx index d87a74f464..a42bd42ed8 100644 --- a/ui/litellm-dashboard/src/components/playground/chat_ui/CodeInterpreterOutput.test.tsx +++ b/ui/litellm-dashboard/src/components/playground/chat_ui/CodeInterpreterOutput.test.tsx @@ -5,6 +5,7 @@ import CodeInterpreterOutput from "./CodeInterpreterOutput"; vi.mock("@/components/networking", () => ({ getProxyBaseUrl: vi.fn(() => "https://example.com"), + getGlobalLitellmHeaderName: vi.fn(() => "Authorization"), })); global.fetch = vi.fn(); diff --git a/ui/litellm-dashboard/src/components/playground/chat_ui/CodeInterpreterOutput.tsx b/ui/litellm-dashboard/src/components/playground/chat_ui/CodeInterpreterOutput.tsx index 5625d0cbf4..b72e55feae 100644 --- a/ui/litellm-dashboard/src/components/playground/chat_ui/CodeInterpreterOutput.tsx +++ b/ui/litellm-dashboard/src/components/playground/chat_ui/CodeInterpreterOutput.tsx @@ -9,7 +9,7 @@ import { } from "@ant-design/icons"; import { Prism as SyntaxHighlighter } from "react-syntax-highlighter"; import { coy } from "react-syntax-highlighter/dist/esm/styles/prism"; -import { getProxyBaseUrl } from "@/components/networking"; +import { getProxyBaseUrl, getGlobalLitellmHeaderName } from "@/components/networking"; interface ContainerFileCitation { type: "container_file_citation"; @@ -55,7 +55,7 @@ const CodeInterpreterOutput: React.FC = ({ `${proxyBaseUrl}/v1/containers/${annotation.container_id}/files/${annotation.file_id}/content`, { headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, }, } ); @@ -90,7 +90,7 @@ const CodeInterpreterOutput: React.FC = ({ `${proxyBaseUrl}/v1/containers/${annotation.container_id}/files/${annotation.file_id}/content`, { headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, }, } ); diff --git a/ui/litellm-dashboard/src/components/playground/llm_calls/a2a_send_message.tsx b/ui/litellm-dashboard/src/components/playground/llm_calls/a2a_send_message.tsx index 0654db3292..b5cfc820f3 100644 --- a/ui/litellm-dashboard/src/components/playground/llm_calls/a2a_send_message.tsx +++ b/ui/litellm-dashboard/src/components/playground/llm_calls/a2a_send_message.tsx @@ -2,7 +2,7 @@ // A2A Protocol (JSON-RPC 2.0) implementation for sending messages to agents import { v4 as uuidv4 } from "uuid"; -import { getProxyBaseUrl } from "../../networking"; +import { getProxyBaseUrl, getGlobalLitellmHeaderName } from "../../networking"; import { A2ATaskMetadata } from "../chat_ui/types"; interface A2AMessagePart { @@ -143,7 +143,7 @@ export const makeA2ASendMessageRequest = async ( const response = await fetch(url, { method: "POST", headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, body: JSON.stringify(jsonRpcRequest), @@ -276,7 +276,7 @@ export const makeA2AStreamMessageRequest = async ( const response = await fetch(url, { method: "POST", headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, body: JSON.stringify(jsonRpcRequest), diff --git a/ui/litellm-dashboard/src/components/playground/llm_calls/embeddings_api.test.tsx b/ui/litellm-dashboard/src/components/playground/llm_calls/embeddings_api.test.tsx index f24a50074c..19a79f3f9b 100644 --- a/ui/litellm-dashboard/src/components/playground/llm_calls/embeddings_api.test.tsx +++ b/ui/litellm-dashboard/src/components/playground/llm_calls/embeddings_api.test.tsx @@ -3,6 +3,7 @@ import { makeOpenAIEmbeddingsRequest } from "./embeddings_api"; vi.mock("@/components/networking", () => ({ getProxyBaseUrl: vi.fn(() => "https://example.com"), + getGlobalLitellmHeaderName: vi.fn(() => "Authorization"), })); describe("embeddings_api", () => { diff --git a/ui/litellm-dashboard/src/components/playground/llm_calls/embeddings_api.tsx b/ui/litellm-dashboard/src/components/playground/llm_calls/embeddings_api.tsx index 84192a1d86..cc3c0f81dc 100644 --- a/ui/litellm-dashboard/src/components/playground/llm_calls/embeddings_api.tsx +++ b/ui/litellm-dashboard/src/components/playground/llm_calls/embeddings_api.tsx @@ -1,5 +1,5 @@ import NotificationManager from "@/components/molecules/notifications_manager"; -import { getProxyBaseUrl } from "@/components/networking"; +import { getProxyBaseUrl, getGlobalLitellmHeaderName } from "@/components/networking"; export async function makeOpenAIEmbeddingsRequest( input: string, @@ -34,7 +34,7 @@ export async function makeOpenAIEmbeddingsRequest( method: "POST", headers: { "Content-Type": "application/json", - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, ...headers, }, body: JSON.stringify({ diff --git a/ui/litellm-dashboard/src/components/playground/llm_calls/fetch_agents.tsx b/ui/litellm-dashboard/src/components/playground/llm_calls/fetch_agents.tsx index 889b012c5f..f0f283c525 100644 --- a/ui/litellm-dashboard/src/components/playground/llm_calls/fetch_agents.tsx +++ b/ui/litellm-dashboard/src/components/playground/llm_calls/fetch_agents.tsx @@ -1,6 +1,6 @@ // fetch_agents.tsx -import { getProxyBaseUrl } from "../../networking"; +import { getProxyBaseUrl, getGlobalLitellmHeaderName } from "../../networking"; export interface Agent { agent_id: string; @@ -27,7 +27,7 @@ export const fetchAvailableAgents = async ( const response = await fetch(url, { method: "GET", headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, }); diff --git a/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/conversation_panel/useConversation.ts b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/conversation_panel/useConversation.ts index 4372622232..7b595c777c 100644 --- a/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/conversation_panel/useConversation.ts +++ b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/conversation_panel/useConversation.ts @@ -3,7 +3,7 @@ import NotificationsManager from "../../../molecules/notifications_manager"; import { TokenUsage } from "../../../playground/chat_ui/ResponseMetrics"; import { Message } from "./types"; import { convertToDotPrompt, extractVariables } from "../utils"; -import { getProxyBaseUrl } from "../../../networking"; +import { getProxyBaseUrl, getGlobalLitellmHeaderName } from "../../../networking"; export const useConversation = (prompt: any, accessToken: string | null) => { const [isLoading, setIsLoading] = useState(false); @@ -91,7 +91,7 @@ export const useConversation = (prompt: any, accessToken: string | null) => { const response = await fetch(`${proxyBaseUrl}/prompts/test`, { method: "POST", headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, body: JSON.stringify(requestBody), diff --git a/ui/litellm-dashboard/src/components/ui_theme_settings.tsx b/ui/litellm-dashboard/src/components/ui_theme_settings.tsx index 83c5cbb5c1..636163d1d7 100644 --- a/ui/litellm-dashboard/src/components/ui_theme_settings.tsx +++ b/ui/litellm-dashboard/src/components/ui_theme_settings.tsx @@ -1,7 +1,7 @@ import React, { useState, useEffect } from "react"; import { Card, Title, Text, TextInput, Button } from "@tremor/react"; import { useTheme } from "@/contexts/ThemeContext"; -import { getProxyBaseUrl } from "@/components/networking"; +import { getProxyBaseUrl, getGlobalLitellmHeaderName } from "@/components/networking"; import NotificationsManager from "./molecules/notifications_manager"; interface UIThemeSettingsProps { @@ -29,7 +29,7 @@ const UIThemeSettings: React.FC = ({ userID, userRole, acc const response = await fetch(url, { method: "GET", headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, }); @@ -53,7 +53,7 @@ const UIThemeSettings: React.FC = ({ userID, userRole, acc const response = await fetch(url, { method: "PATCH", headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, body: JSON.stringify({ @@ -87,7 +87,7 @@ const UIThemeSettings: React.FC = ({ userID, userRole, acc const response = await fetch(url, { method: "PATCH", headers: { - Authorization: `Bearer ${accessToken}`, + [getGlobalLitellmHeaderName()]: `Bearer ${accessToken}`, "Content-Type": "application/json", }, body: JSON.stringify({