Skip to main content
Glama
IBM
by IBM
os.ts3.87 kB
import { toast } from 'sonner' import { APIRoutes } from './routes' import { AgentDetails, Sessions, TeamDetails } from '@/types/os' // Helper function to create headers with optional auth token const createHeaders = (authToken?: string): HeadersInit => { const headers: HeadersInit = { 'Content-Type': 'application/json' } if (authToken) { headers['Authorization'] = `Bearer ${authToken}` } return headers } export const getAgentsAPI = async ( endpoint: string, authToken?: string ): Promise<AgentDetails[]> => { const url = APIRoutes.GetAgents(endpoint) try { const response = await fetch(url, { method: 'GET', headers: createHeaders(authToken) }) if (!response.ok) { toast.error(`Failed to fetch agents: ${response.statusText}`) return [] } const data = await response.json() return data } catch { toast.error('Error fetching agents') return [] } } export const getStatusAPI = async ( base: string, authToken?: string ): Promise<number> => { const response = await fetch(APIRoutes.Status(base), { method: 'GET', headers: createHeaders(authToken) }) return response.status } export const getAllSessionsAPI = async ( base: string, type: 'agent' | 'team', componentId: string, dbId: string, authToken?: string ): Promise<Sessions | { data: [] }> => { try { const url = new URL(APIRoutes.GetSessions(base)) url.searchParams.set('type', type) url.searchParams.set('component_id', componentId) url.searchParams.set('db_id', dbId) const response = await fetch(url.toString(), { method: 'GET', headers: createHeaders(authToken) }) if (!response.ok) { if (response.status === 404) { return { data: [] } } throw new Error(`Failed to fetch sessions: ${response.statusText}`) } return response.json() } catch { return { data: [] } } } export const getSessionAPI = async ( base: string, type: 'agent' | 'team', sessionId: string, dbId?: string, authToken?: string ) => { // build query string const queryParams = new URLSearchParams({ type }) if (dbId) queryParams.append('db_id', dbId) const response = await fetch( `${APIRoutes.GetSession(base, sessionId)}?${queryParams.toString()}`, { method: 'GET', headers: createHeaders(authToken) } ) if (!response.ok) { throw new Error(`Failed to fetch session: ${response.statusText}`) } return response.json() } export const deleteSessionAPI = async ( base: string, dbId: string, sessionId: string, authToken?: string ) => { const queryParams = new URLSearchParams() if (dbId) queryParams.append('db_id', dbId) const response = await fetch( `${APIRoutes.DeleteSession(base, sessionId)}?${queryParams.toString()}`, { method: 'DELETE', headers: createHeaders(authToken) } ) return response } export const getTeamsAPI = async ( endpoint: string, authToken?: string ): Promise<TeamDetails[]> => { const url = APIRoutes.GetTeams(endpoint) try { const response = await fetch(url, { method: 'GET', headers: createHeaders(authToken) }) if (!response.ok) { toast.error(`Failed to fetch teams: ${response.statusText}`) return [] } const data = await response.json() return data } catch { toast.error('Error fetching teams') return [] } } export const deleteTeamSessionAPI = async ( base: string, teamId: string, sessionId: string, authToken?: string ) => { const response = await fetch( APIRoutes.DeleteTeamSession(base, teamId, sessionId), { method: 'DELETE', headers: createHeaders(authToken) } ) if (!response.ok) { throw new Error(`Failed to delete team session: ${response.statusText}`) } return response }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/IBM/ibmi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server