import client from './client'; import type { PaginatedResponse } from './users'; export interface TokenInfo { id: string; node_id: string; status: string; created_at: string; } export interface ProcessInstanceInfo { id: string; definition_id: string; definition_name?: string; business_key?: string; status: string; started_by: string; started_at: string; completed_at?: string; created_at: string; active_tokens: TokenInfo[]; } export interface StartInstanceRequest { definition_id: string; business_key?: string; variables?: Array<{ name: string; var_type?: string; value: unknown }>; } export async function startInstance(req: StartInstanceRequest) { const { data } = await client.post<{ success: boolean; data: ProcessInstanceInfo }>( '/workflow/instances', req, ); return data.data; } export async function listInstances(page = 1, pageSize = 20) { const { data } = await client.get<{ success: boolean; data: PaginatedResponse }>( '/workflow/instances', { params: { page, page_size: pageSize } }, ); return data.data; } export async function getInstance(id: string) { const { data } = await client.get<{ success: boolean; data: ProcessInstanceInfo }>( `/workflow/instances/${id}`, ); return data.data; } export async function suspendInstance(id: string) { const { data } = await client.post<{ success: boolean; data: null }>( `/workflow/instances/${id}/suspend`, ); return data.data; } export async function resumeInstance(id: string) { const { data } = await client.post<{ success: boolean; data: null }>( `/workflow/instances/${id}/resume`, ); return data.data; } export async function terminateInstance(id: string) { const { data } = await client.post<{ success: boolean; data: null }>( `/workflow/instances/${id}/terminate`, ); return data.data; }