import { WEBUI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants'; import type { Banner } from '$lib/types'; export const importConfig = async (token: string, config) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/configs/import`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }, body: JSON.stringify({ config: config }) }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.error(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const exportConfig = async (token: string) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/configs/export`, { method: 'GET', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` } }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.error(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const getConnectionsConfig = async (token: string) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/configs/connections`, { method: 'GET', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` } }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.error(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const setConnectionsConfig = async (token: string, config: object) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/configs/connections`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }, body: JSON.stringify({ ...config }) }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.error(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const getToolServerConnections = async (token: string) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/configs/tool_servers`, { method: 'GET', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` } }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.error(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const setToolServerConnections = async (token: string, connections: object) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/configs/tool_servers`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }, body: JSON.stringify({ ...connections }) }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.error(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const verifyToolServerConnection = async (token: string, connection: object) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/configs/tool_servers/verify`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }, body: JSON.stringify({ ...connection }) }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.error(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; type RegisterOAuthClientForm = { url: string; client_id: string; client_name?: string; }; export const registerOAuthClient = async ( token: string, formData: RegisterOAuthClientForm, type: null | string = null ) => { let error = null; const searchParams = type ? `?type=${type}` : ''; const res = await fetch(`${WEBUI_API_BASE_URL}/configs/oauth/clients/register${searchParams}`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }, body: JSON.stringify({ ...formData }) }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.error(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const getOAuthClientAuthorizationUrl = (clientId: string, type: null | string = null) => { const oauthClientId = type ? `${type}:${clientId}` : clientId; return `${WEBUI_BASE_URL}/oauth/clients/${oauthClientId}/authorize`; }; export const getCodeExecutionConfig = async (token: string) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/configs/code_execution`, { method: 'GET', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` } }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.error(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const setCodeExecutionConfig = async (token: string, config: object) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/configs/code_execution`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }, body: JSON.stringify({ ...config }) }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.error(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const getModelsConfig = async (token: string) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/configs/models`, { method: 'GET', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` } }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.error(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const setModelsConfig = async (token: string, config: object) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/configs/models`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }, body: JSON.stringify({ ...config }) }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.error(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const setDefaultPromptSuggestions = async (token: string, promptSuggestions: string) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/configs/suggestions`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }, body: JSON.stringify({ suggestions: promptSuggestions }) }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.error(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const getBanners = async (token: string): Promise => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/configs/banners`, { method: 'GET', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` } }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.error(err); error = err.detail; return null; }); if (error) { throw error; } return res; }; export const setBanners = async (token: string, banners: Banner[]) => { let error = null; const res = await fetch(`${WEBUI_API_BASE_URL}/configs/banners`, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }, body: JSON.stringify({ banners: banners }) }) .then(async (res) => { if (!res.ok) throw await res.json(); return res.json(); }) .catch((err) => { console.error(err); error = err.detail; return null; }); if (error) { throw error; } return res; };