UNPKG

@memori.ai/memori-api-client

Version:

React library to integrate a Memori in your app or website

138 lines (129 loc) 3.61 kB
import type { ResponseSpec, Function, MacroFunction } from '../types'; import { apiFetcher } from '../apiFetcher'; /********************* * * * Functions * * * *********************/ export default (apiUrl: string) => ({ /** * Lists all Functions objects. * @param {string} sessionId The session ID */ getAllFunctions: async (sessionId: string) => apiFetcher(`/Functions/${sessionId}`, { method: 'GET', apiUrl, }) as Promise< ResponseSpec & { /** * Total number of Function objects. */ count: number; /** * List of Function objects. May be empty. */ functions: Function[]; } >, /** * Lists Function objects with pagination. * @param {string} sessionId The session ID * @param {number} from The 0-based index of the first Function object to list * @param {number} howMany The number of the Function objects to list */ getFunctionsPaginated: async ( sessionId: string, from: number, howMany: number ) => apiFetcher(`/Functions/${sessionId}/${from}/${howMany}`, { method: 'GET', apiUrl, }) as Promise< ResponseSpec & { /** * Total number of Function objects. */ count: number; /** * List of Function objects. May be empty. */ functions: Function[]; } >, /** * Gets the details of a Function object. * @param {string} sessionId The session ID * @param {string} functionID The Function object ID */ getFunction: async (sessionId: string, functionID: string) => apiFetcher(`/Function/${sessionId}/${functionID}`, { method: 'GET', apiUrl, }) as Promise< ResponseSpec & { function: Function; } >, /** * Updates an existing Function object. * Only non-null (present) fields are considered for update. Null or absent fields are left unaltered. * @param {string} sessionId The session ID * @param {Function} func The Function object */ patchFunction: async ( sessionId: string, func: Partial<Function> & { functionID: string } ) => apiFetcher(`/Function/${sessionId}/${func.functionID}`, { method: 'PATCH', apiUrl, body: func, }) as Promise<ResponseSpec>, /** * Removes an existing Function object. * @param {string} sessionId The session ID * @param {string} functionID The Function object ID */ deleteFunction: async (sessionId: string, functionID: string) => apiFetcher(`/Function/${sessionId}/${functionID}`, { method: 'DELETE', apiUrl, }) as Promise<ResponseSpec>, /** * Creates a new Function object. * @param {string} sessionId The session ID * @param {Function} func The Function object */ createFunction: async (sessionId: string, func: Function) => apiFetcher(`/Function/${sessionId}`, { method: 'POST', apiUrl, body: func, }) as Promise< ResponseSpec & { functionID: string; } >, /** * Lists all Macro Function objects. * @param {string} sessionId The session ID */ getMacroFunctions: async (sessionId: string) => apiFetcher(`/MacroFunctions/${sessionId}`, { method: 'GET', apiUrl, }) as Promise< ResponseSpec & { /** * Total number of Macro Function objects. */ count: number; /** * List of Function objects. May be empty. */ macroFunctions: MacroFunction[]; } >, });