mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-25 18:54:30 +00:00
Merge pull request #4916 from BerriAI/litellm_fix_ui_login
Feat UI - allow using custom header for litellm api key
This commit is contained in:
commit
1a34756159
4 changed files with 109 additions and 78 deletions
|
@ -1314,8 +1314,9 @@ def get_api_key_from_custom_header(
|
||||||
# use this as the virtual key passed to litellm proxy
|
# use this as the virtual key passed to litellm proxy
|
||||||
custom_litellm_key_header_name = custom_litellm_key_header_name.lower()
|
custom_litellm_key_header_name = custom_litellm_key_header_name.lower()
|
||||||
verbose_proxy_logger.debug(
|
verbose_proxy_logger.debug(
|
||||||
"searching for custom_litellm_key_header_name= %s",
|
"searching for custom_litellm_key_header_name= %s, in headers=%s",
|
||||||
custom_litellm_key_header_name,
|
custom_litellm_key_header_name,
|
||||||
|
request.headers,
|
||||||
)
|
)
|
||||||
custom_api_key = request.headers.get(custom_litellm_key_header_name)
|
custom_api_key = request.headers.get(custom_litellm_key_header_name)
|
||||||
if custom_api_key:
|
if custom_api_key:
|
||||||
|
|
|
@ -7774,7 +7774,7 @@ async def fallback_login(request: Request):
|
||||||
"/login", include_in_schema=False
|
"/login", include_in_schema=False
|
||||||
) # hidden since this is a helper for UI sso login
|
) # hidden since this is a helper for UI sso login
|
||||||
async def login(request: Request):
|
async def login(request: Request):
|
||||||
global premium_user
|
global premium_user, general_settings
|
||||||
try:
|
try:
|
||||||
import multipart
|
import multipart
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
@ -7876,6 +7876,9 @@ async def login(request: Request):
|
||||||
"user_role": user_role, # this is the path without sso - we can assume only admins will use this
|
"user_role": user_role, # this is the path without sso - we can assume only admins will use this
|
||||||
"login_method": "username_password",
|
"login_method": "username_password",
|
||||||
"premium_user": premium_user,
|
"premium_user": premium_user,
|
||||||
|
"auth_header_name": general_settings.get(
|
||||||
|
"litellm_key_header_name", "Authorization"
|
||||||
|
),
|
||||||
},
|
},
|
||||||
master_key,
|
master_key,
|
||||||
algorithm="HS256",
|
algorithm="HS256",
|
||||||
|
@ -7940,6 +7943,9 @@ async def login(request: Request):
|
||||||
"user_role": user_role,
|
"user_role": user_role,
|
||||||
"login_method": "username_password",
|
"login_method": "username_password",
|
||||||
"premium_user": premium_user,
|
"premium_user": premium_user,
|
||||||
|
"auth_header_name": general_settings.get(
|
||||||
|
"litellm_key_header_name", "Authorization"
|
||||||
|
),
|
||||||
},
|
},
|
||||||
master_key,
|
master_key,
|
||||||
algorithm="HS256",
|
algorithm="HS256",
|
||||||
|
@ -7988,7 +7994,7 @@ async def onboarding(invite_link: str):
|
||||||
- Get user from db
|
- Get user from db
|
||||||
- Pass in user_email if set
|
- Pass in user_email if set
|
||||||
"""
|
"""
|
||||||
global prisma_client, master_key
|
global prisma_client, master_key, general_settings
|
||||||
if master_key is None:
|
if master_key is None:
|
||||||
raise ProxyException(
|
raise ProxyException(
|
||||||
message="Master Key not set for Proxy. Please set Master Key to use Admin UI. Set `LITELLM_MASTER_KEY` in .env or set general_settings:master_key in config.yaml. https://docs.litellm.ai/docs/proxy/virtual_keys. If set, use `--detailed_debug` to debug issue.",
|
message="Master Key not set for Proxy. Please set Master Key to use Admin UI. Set `LITELLM_MASTER_KEY` in .env or set general_settings:master_key in config.yaml. https://docs.litellm.ai/docs/proxy/virtual_keys. If set, use `--detailed_debug` to debug issue.",
|
||||||
|
@ -8075,6 +8081,9 @@ async def onboarding(invite_link: str):
|
||||||
"user_role": user_obj.user_role,
|
"user_role": user_obj.user_role,
|
||||||
"login_method": "username_password",
|
"login_method": "username_password",
|
||||||
"premium_user": premium_user,
|
"premium_user": premium_user,
|
||||||
|
"auth_header_name": general_settings.get(
|
||||||
|
"litellm_key_header_name", "Authorization"
|
||||||
|
),
|
||||||
},
|
},
|
||||||
master_key,
|
master_key,
|
||||||
algorithm="HS256",
|
algorithm="HS256",
|
||||||
|
@ -8492,6 +8501,9 @@ async def auth_callback(request: Request):
|
||||||
"user_role": user_role,
|
"user_role": user_role,
|
||||||
"login_method": "sso",
|
"login_method": "sso",
|
||||||
"premium_user": premium_user,
|
"premium_user": premium_user,
|
||||||
|
"auth_header_name": general_settings.get(
|
||||||
|
"litellm_key_header_name", "Authorization"
|
||||||
|
),
|
||||||
},
|
},
|
||||||
master_key,
|
master_key,
|
||||||
algorithm="HS256",
|
algorithm="HS256",
|
||||||
|
|
|
@ -18,6 +18,7 @@ import Usage from "../components/usage";
|
||||||
import CacheDashboard from "@/components/cache_dashboard";
|
import CacheDashboard from "@/components/cache_dashboard";
|
||||||
import { jwtDecode } from "jwt-decode";
|
import { jwtDecode } from "jwt-decode";
|
||||||
import { Typography } from "antd";
|
import { Typography } from "antd";
|
||||||
|
import { setGlobalLitellmHeaderName } from "../components/networking"
|
||||||
|
|
||||||
function getCookie(name: string) {
|
function getCookie(name: string) {
|
||||||
console.log("COOKIES", document.cookie)
|
console.log("COOKIES", document.cookie)
|
||||||
|
@ -123,6 +124,11 @@ const CreateKeyPage = () => {
|
||||||
if (decoded.premium_user) {
|
if (decoded.premium_user) {
|
||||||
setPremiumUser(decoded.premium_user);
|
setPremiumUser(decoded.premium_user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (decoded.auth_header_name) {
|
||||||
|
setGlobalLitellmHeaderName(decoded.auth_header_name);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [token]);
|
}, [token]);
|
||||||
|
|
|
@ -36,6 +36,17 @@ const handleError = async (errorData: string) => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Global variable for the header name
|
||||||
|
let globalLitellmHeaderName: string | null = null;
|
||||||
|
|
||||||
|
// Function to set the global header name
|
||||||
|
export function setGlobalLitellmHeaderName(headerName: string | null) {
|
||||||
|
console.log(`setGlobalLitellmHeaderName: ${headerName}`);
|
||||||
|
globalLitellmHeaderName = headerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export const modelCostMap = async (
|
export const modelCostMap = async (
|
||||||
accessToken: string,
|
accessToken: string,
|
||||||
) => {
|
) => {
|
||||||
|
@ -45,7 +56,7 @@ export const modelCostMap = async (
|
||||||
url, {
|
url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -68,7 +79,7 @@ export const modelCreateCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -107,7 +118,7 @@ export const modelSettingsCall = async (accessToken: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -138,7 +149,7 @@ export const modelDeleteCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -180,7 +191,7 @@ export const budgetDeleteCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -215,7 +226,7 @@ export const budgetCreateCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -251,7 +262,7 @@ export const invitationCreateCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -290,7 +301,7 @@ export const invitationClaimCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -328,7 +339,7 @@ export const alertingSettingsCall = async (accessToken: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -385,7 +396,7 @@ export const keyCreateCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -447,7 +458,7 @@ export const userCreateCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -481,7 +492,7 @@ export const keyDeleteCall = async (accessToken: String, user_key: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -513,7 +524,7 @@ export const teamDeleteCall = async (accessToken: String, teamID: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -566,7 +577,7 @@ export const userInfoCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -601,7 +612,7 @@ export const teamInfoCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -633,7 +644,7 @@ export const getTotalSpendCall = async (accessToken: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -698,7 +709,7 @@ export const claimOnboardingToken = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -740,7 +751,7 @@ export const modelInfoCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -788,7 +799,7 @@ export const modelHubCall = async (accessToken: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -819,7 +830,7 @@ export const getAllowedIPs = async (accessToken: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -848,7 +859,7 @@ export const addAllowedIP = async (accessToken: String, ip: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({ ip: ip }),
|
body: JSON.stringify({ ip: ip }),
|
||||||
|
@ -878,7 +889,7 @@ export const deleteAllowedIP = async (accessToken: String, ip: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({ ip: ip }),
|
body: JSON.stringify({ ip: ip }),
|
||||||
|
@ -920,7 +931,7 @@ export const modelMetricsCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -959,7 +970,7 @@ export const streamingModelMetricsCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1004,7 +1015,7 @@ export const modelMetricsSlowResponsesCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1048,7 +1059,7 @@ export const modelExceptionsCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1076,6 +1087,7 @@ export const modelAvailableCall = async (
|
||||||
/**
|
/**
|
||||||
* Get all the models user has access to
|
* Get all the models user has access to
|
||||||
*/
|
*/
|
||||||
|
console.log("in /models calls, globalLitellmHeaderName", globalLitellmHeaderName)
|
||||||
try {
|
try {
|
||||||
let url = proxyBaseUrl ? `${proxyBaseUrl}/models` : `/models`;
|
let url = proxyBaseUrl ? `${proxyBaseUrl}/models` : `/models`;
|
||||||
|
|
||||||
|
@ -1083,7 +1095,7 @@ export const modelAvailableCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1113,7 +1125,7 @@ export const keySpendLogsCall = async (accessToken: String, token: String) => {
|
||||||
const response = await fetch(`${url}?api_key=${token}`, {
|
const response = await fetch(`${url}?api_key=${token}`, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1141,7 +1153,7 @@ export const teamSpendLogsCall = async (accessToken: String) => {
|
||||||
const response = await fetch(`${url}`, {
|
const response = await fetch(`${url}`, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1184,7 +1196,7 @@ export const tagsSpendLogsCall = async (
|
||||||
const response = await fetch(`${url}`, {
|
const response = await fetch(`${url}`, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1212,7 +1224,7 @@ export const allTagNamesCall = async (accessToken: String) => {
|
||||||
const response = await fetch(`${url}`, {
|
const response = await fetch(`${url}`, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1240,7 +1252,7 @@ export const allEndUsersCall = async (accessToken: String) => {
|
||||||
const response = await fetch(`${url}`, {
|
const response = await fetch(`${url}`, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1278,7 +1290,7 @@ export const userSpendLogsCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1308,7 +1320,7 @@ export const adminSpendLogsCall = async (accessToken: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1338,7 +1350,7 @@ export const adminTopKeysCall = async (accessToken: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1386,14 +1398,14 @@ export const adminTopEndUsersCall = async (
|
||||||
const requestOptions: {
|
const requestOptions: {
|
||||||
method: string;
|
method: string;
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: string;
|
[globalLitellmHeaderName]: string;
|
||||||
"Content-Type": string;
|
"Content-Type": string;
|
||||||
};
|
};
|
||||||
body?: string; // The body is optional and might not be present
|
body?: string; // The body is optional and might not be present
|
||||||
} = {
|
} = {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -1439,12 +1451,12 @@ export const adminspendByProvider = async (
|
||||||
const requestOptions: {
|
const requestOptions: {
|
||||||
method: string;
|
method: string;
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: string;
|
[globalLitellmHeaderName]: string;
|
||||||
};
|
};
|
||||||
} = {
|
} = {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1482,12 +1494,12 @@ export const adminGlobalActivity = async (
|
||||||
const requestOptions: {
|
const requestOptions: {
|
||||||
method: string;
|
method: string;
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: string;
|
[globalLitellmHeaderName]: string;
|
||||||
};
|
};
|
||||||
} = {
|
} = {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1523,12 +1535,12 @@ export const adminGlobalCacheActivity = async (
|
||||||
const requestOptions: {
|
const requestOptions: {
|
||||||
method: string;
|
method: string;
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: string;
|
[globalLitellmHeaderName]: string;
|
||||||
};
|
};
|
||||||
} = {
|
} = {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1564,12 +1576,12 @@ export const adminGlobalActivityPerModel = async (
|
||||||
const requestOptions: {
|
const requestOptions: {
|
||||||
method: string;
|
method: string;
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: string;
|
[globalLitellmHeaderName]: string;
|
||||||
};
|
};
|
||||||
} = {
|
} = {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1610,12 +1622,12 @@ export const adminGlobalActivityExceptions = async (
|
||||||
const requestOptions: {
|
const requestOptions: {
|
||||||
method: string;
|
method: string;
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: string;
|
[globalLitellmHeaderName]: string;
|
||||||
};
|
};
|
||||||
} = {
|
} = {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1656,12 +1668,12 @@ export const adminGlobalActivityExceptionsPerDeployment = async (
|
||||||
const requestOptions: {
|
const requestOptions: {
|
||||||
method: string;
|
method: string;
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: string;
|
[globalLitellmHeaderName]: string;
|
||||||
};
|
};
|
||||||
} = {
|
} = {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1690,7 +1702,7 @@ export const adminTopModelsCall = async (accessToken: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1717,7 +1729,7 @@ export const keyInfoCall = async (accessToken: String, keys: String[]) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -1747,7 +1759,7 @@ export const spendUsersCall = async (accessToken: String, userID: String) => {
|
||||||
const response = await fetch(`${url}?user_id=${userID}`, {
|
const response = await fetch(`${url}?user_id=${userID}`, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1779,7 +1791,7 @@ export const userRequestModelCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -1814,7 +1826,7 @@ export const userGetRequesedtModelsCall = async (accessToken: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1854,7 +1866,7 @@ export const userGetAllUsersCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1883,7 +1895,7 @@ export const getPossibleUserRoles = async (accessToken: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1912,7 +1924,7 @@ export const teamCreateCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -1948,7 +1960,7 @@ export const keyUpdateCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -1983,7 +1995,7 @@ export const teamUpdateCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -2018,7 +2030,7 @@ export const modelUpdateCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -2062,7 +2074,7 @@ export const teamMemberAddCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -2105,7 +2117,7 @@ export const userUpdateUserCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: response_body,
|
body: response_body,
|
||||||
|
@ -2143,7 +2155,7 @@ export const PredictedSpendLogsCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -2179,7 +2191,7 @@ export const slackBudgetAlertsHealthCheck = async (accessToken: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -2218,7 +2230,7 @@ export const serviceHealthCheck = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -2253,7 +2265,7 @@ export const getBudgetList = async (accessToken: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -2286,7 +2298,7 @@ export const getBudgetSettings = async (accessToken: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -2324,7 +2336,7 @@ export const getCallbacksCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -2355,7 +2367,7 @@ export const getGeneralSettingsCall = async (accessToken: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -2389,7 +2401,7 @@ export const getConfigFieldSetting = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -2427,7 +2439,7 @@ export const updateConfigFieldSetting = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify(formData),
|
body: JSON.stringify(formData),
|
||||||
|
@ -2467,7 +2479,7 @@ export const deleteConfigFieldSetting = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify(formData),
|
body: JSON.stringify(formData),
|
||||||
|
@ -2502,7 +2514,7 @@ export const setCallbacksCall = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
|
@ -2537,7 +2549,7 @@ export const healthCheckCall = async (accessToken: String) => {
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -2573,7 +2585,7 @@ export const getProxyBaseUrlAndLogoutUrl = async (
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue