or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

api-client.mdcanvas-operations.mdcomponent-system.mdcomposables.mdindex.mdstate-management.mdworkflow-management.md

workflow-management.mddocs/

0

# Workflow Management

1

2

Core workflow operations for creating, editing, executing, and managing automated workflows in the n8n Editor UI.

3

4

## Capabilities

5

6

### Workflow Store

7

8

Central Pinia store for managing workflow state and operations.

9

10

```typescript { .api }

11

/**

12

* Main workflow store providing centralized workflow state management

13

*/

14

interface WorkflowsStore {

15

// State properties

16

workflow: IWorkflowDb;

17

workflowObject: Workflow;

18

activeWorkflows: string[];

19

workflowExecutionData: IExecutionResponse | null;

20

nodeMetadata: NodeMetadataMap;

21

chatMessages: string[];

22

23

// Computed getters

24

workflowName: string;

25

workflowId: string;

26

allNodes: INodeUi[];

27

isNewWorkflow: boolean;

28

isWorkflowRunning: boolean;

29

nodesIssuesExist: boolean;

30

31

// Actions - Core Workflow Operations

32

setWorkflow(workflow: IWorkflowDb): void;

33

resetWorkflow(): void;

34

resetState(): void;

35

createNewWorkflow(data: WorkflowDataCreate): Promise<IWorkflowDb>;

36

updateWorkflow(id: string, data: WorkflowDataUpdate): Promise<IWorkflowDb>;

37

fetchWorkflow(id: string): Promise<IWorkflowDb>;

38

fetchAllWorkflows(): Promise<IWorkflowDb[]>;

39

fetchWorkflowsPage(params: WorkflowSearchParams): Promise<IWorkflowsListResponse>;

40

deleteWorkflow(id: string): Promise<void>;

41

archiveWorkflow(id: string): Promise<void>;

42

unarchiveWorkflow(id: string): Promise<void>;

43

44

// Actions - Workflow State Management

45

setWorkflowActive(targetWorkflowId: string): void;

46

setWorkflowInactive(targetWorkflowId: string): void;

47

setWorkflowName(data: { newName: string; setStateDirty: boolean }): void;

48

setWorkflowSettings(settings: IWorkflowSettings): void;

49

setWorkflowPinData(data: IPinData): void;

50

setWorkflowTagIds(tags: string[]): void;

51

setWorkflowScopes(scopes: Scope[]): void;

52

setWorkflowMetadata(metadata: WorkflowMetadata): void;

53

54

// Actions - Node Operations

55

addNode(node: INodeUi): void;

56

removeNode(node: INodeUi): void;

57

removeNodeById(id: string): void;

58

updateNodeAtIndex(index: number, node: INodeUi): void;

59

updateNodeProperties(data: INodeUpdatePropertiesInformation): void;

60

setNodeValue(updateInfo: IUpdateInformation): void;

61

setNodeParameters(updateInfo: IUpdateInformation): void;

62

setNodePositionById(id: string, position: XYPosition): void;

63

64

// Actions - Connection Operations

65

addConnection(data: { connection: IConnection[] }): void;

66

removeConnection(data: { connection: IConnection[] }): void;

67

removeAllConnections(): void;

68

removeAllNodeConnection(data: { node: INodeUi }): void;

69

70

// Actions - Execution Operations

71

runWorkflow(data: IStartRunData): Promise<IExecutionPushResponse>;

72

setWorkflowExecutionData(executionData: IExecutionResponse | null): void;

73

fetchExecutionDataById(executionId: string): Promise<IExecutionFlattedResponse>;

74

deleteExecution(executionId: string): Promise<void>;

75

76

// Actions - Pin Data Operations

77

pinData(payload: { node: INodeUi; data: INodeExecutionData[] }): void;

78

unpinData(payload: { node: INodeUi }): void;

79

}

80

81

/**

82

* Access the workflows store instance

83

*/

84

function useWorkflowsStore(): WorkflowsStore;

85

```

86

87

**Usage Example:**

88

89

```typescript

90

import { useWorkflowsStore } from '@/stores/workflows.store';

91

92

const workflowsStore = useWorkflowsStore();

93

94

// Create new workflow

95

const workflow = await workflowsStore.createNewWorkflow({

96

name: 'Data Processing Pipeline',

97

nodes: [],

98

connections: {}

99

});

100

101

// Add a node

102

workflowsStore.addNode({

103

id: 'start-node',

104

name: 'When clicking "Test workflow"',

105

type: 'n8n-nodes-base.manualTrigger',

106

position: [240, 300],

107

parameters: {}

108

});

109

110

// Execute workflow

111

const workflowData = workflowsStore.getWorkflowDataToSave();

112

await workflowsStore.runWorkflow({

113

workflowData: workflowData

114

});

115

```

116

117

### Workflow Creation

118

119

Create new workflows with initial configuration.

120

121

```typescript { .api }

122

/**

123

* Create a new workflow with specified configuration

124

* @param data - Workflow creation data

125

* @returns Promise resolving to created workflow

126

*/

127

function createNewWorkflow(data: WorkflowDataCreate): Promise<IWorkflowDb>;

128

129

interface WorkflowDataCreate {

130

name: string;

131

nodes?: INodeUi[];

132

connections?: IConnections;

133

settings?: IWorkflowSettings;

134

tags?: string[];

135

meta?: WorkflowMetadata;

136

}

137

138

interface WorkflowMetadata {

139

templateId?: string;

140

instanceId?: string;

141

templateCredsSetupCompleted?: boolean;

142

category?: string;

143

}

144

```

145

146

### Workflow Updates

147

148

Update existing workflows with new data.

149

150

```typescript { .api }

151

/**

152

* Update an existing workflow

153

* @param id - Workflow ID to update

154

* @param data - Updated workflow data

155

* @returns Promise resolving to updated workflow

156

*/

157

function updateWorkflow(id: string, data: WorkflowDataUpdate): Promise<IWorkflowDb>;

158

159

interface WorkflowDataUpdate {

160

name?: string;

161

nodes?: INodeUi[];

162

connections?: IConnections;

163

settings?: IWorkflowSettings;

164

tags?: string[];

165

active?: boolean;

166

pinData?: IPinData;

167

versionId?: string;

168

meta?: WorkflowMetadata;

169

}

170

```

171

172

### Node Management

173

174

Add, remove, and modify nodes within workflows.

175

176

```typescript { .api }

177

/**

178

* Add a new node to the current workflow

179

* @param node - Node data to add

180

*/

181

function addNode(node: INodeUi): void;

182

183

/**

184

* Remove a node from the current workflow

185

* @param node - Node to remove

186

*/

187

function removeNode(node: INodeUi): void;

188

189

/**

190

* Update a node parameter value

191

* @param updateInfo - Parameter update information

192

*/

193

function setNodeValue(updateInfo: IUpdateInformation): void;

194

195

interface INodeUi extends INode {

196

position: XYPosition;

197

color?: string;

198

notes?: string;

199

issues?: INodeIssues;

200

name: string;

201

pinData?: IDataObject;

202

draggable?: boolean;

203

}

204

205

interface IUpdateInformation<T = NodeParameterValueType> {

206

name: string; // Node name

207

key?: string; // Parameter key path

208

value: T; // New parameter value

209

node?: string; // Target node name

210

oldValue?: string | number;

211

type?: 'optionsOrderChanged';

212

}

213

```

214

215

### Connection Management

216

217

Manage connections between workflow nodes.

218

219

```typescript { .api }

220

/**

221

* Add a connection between nodes

222

* @param data - Connection data

223

*/

224

function addConnection(data: { connection: IConnection[] }): void;

225

226

/**

227

* Remove a connection between nodes

228

* @param data - Connection data to remove

229

*/

230

function removeConnection(data: { connection: IConnection[] }): void;

231

232

interface IConnection {

233

node: string;

234

type: NodeConnectionType;

235

index: number;

236

}

237

238

interface IConnections {

239

[key: string]: {

240

[key: string]: IConnection[][];

241

};

242

}

243

```

244

245

### Workflow Execution

246

247

Execute workflows and manage execution state.

248

249

```typescript { .api }

250

/**

251

* Execute a workflow with specified configuration

252

* @param data - Execution configuration

253

* @returns Promise resolving to execution response

254

*/

255

function runWorkflow(data: IStartRunData): Promise<IExecutionPushResponse>;

256

257

interface IStartRunData {

258

workflowData: WorkflowData;

259

startNodes?: StartNodeData[];

260

destinationNode?: string;

261

runData?: IRunData;

262

dirtyNodeNames?: string[];

263

triggerToStartFrom?: {

264

name: string;

265

data?: ITaskData;

266

};

267

}

268

269

interface IExecutionPushResponse {

270

executionId?: string;

271

waitingForWebhook?: boolean;

272

}

273

274

interface StartNodeData {

275

name: string;

276

sourceData?: ITaskData;

277

}

278

```

279

280

**Usage Example:**

281

282

```typescript

283

// Execute workflow from specific node

284

await workflowsStore.runWorkflow({

285

workflowData: workflowsStore.workflow,

286

startNodes: [{ name: 'HTTP Request' }],

287

destinationNode: 'Data Processing'

288

});

289

290

// Execute with custom run data

291

await workflowsStore.runWorkflow({

292

workflowData: workflowsStore.workflow,

293

runData: {

294

'HTTP Request': [

295

{

296

startTime: new Date().getTime(),

297

executionTime: 0,

298

data: { main: [[{ json: { id: 1, name: 'test' } }]] }

299

}

300

]

301

}

302

});

303

```

304

305

### Workflow Helpers

306

307

Utility functions for common workflow operations.

308

309

```typescript { .api }

310

/**

311

* Composable providing workflow helper functions

312

*/

313

function useWorkflowHelpers(): {

314

getWorkflowDataToSave(): IWorkflowDataUpdate;

315

saveCurrentWorkflow(options?: { tags?: string[] }): Promise<void>;

316

getCurrentWorkflow(copyData?: boolean): Workflow;

317

getWorkflowDataToSave(): IWorkflowDataUpdate;

318

};

319

320

/**

321

* Get workflow data prepared for saving

322

* @returns Workflow data ready for API submission

323

*/

324

function getWorkflowDataToSave(): IWorkflowDataUpdate;

325

326

/**

327

* Save the current workflow to backend

328

* @param options - Save options including tags

329

*/

330

function saveCurrentWorkflow(options?: { tags?: string[] }): Promise<void>;

331

332

/**

333

* Get current workflow object instance

334

* @param copyData - Whether to copy workflow data

335

* @returns Workflow execution object

336

*/

337

function getCurrentWorkflow(copyData?: boolean): Workflow;

338

```

339

340

### Workflow Settings

341

342

Configure workflow execution and behavior settings.

343

344

```typescript { .api }

345

interface IWorkflowSettings extends IWorkflowSettingsWorkflow {

346

errorWorkflow?: string;

347

timezone?: string;

348

executionTimeout?: number;

349

maxExecutionTimeout?: number;

350

callerIds?: string;

351

callerPolicy?: WorkflowSettings.CallerPolicy;

352

executionOrder: NonNullable<IWorkflowSettingsWorkflow['executionOrder']>;

353

}

354

355

interface IWorkflowSettingsWorkflow {

356

executionOrder: 'v0' | 'v1';

357

saveDataErrorExecution: 'all' | 'none';

358

saveDataSuccessExecution: 'all' | 'none';

359

saveManualExecutions: boolean;

360

saveExecutionProgress: boolean;

361

callerPolicy?: string;

362

callerIds?: string;

363

}

364

```

365

366

## Types

367

368

```typescript { .api }

369

interface IWorkflowDb {

370

id: string;

371

name: string;

372

active: boolean;

373

isArchived: boolean;

374

createdAt: number | string;

375

updatedAt: number | string;

376

nodes: INodeUi[];

377

connections: IConnections;

378

settings?: IWorkflowSettings;

379

tags?: ITag[] | string[];

380

pinData?: IPinData;

381

sharedWithProjects?: ProjectSharingData[];

382

homeProject?: ProjectSharingData;

383

scopes?: Scope[];

384

versionId: string;

385

usedCredentials?: IUsedCredential[];

386

meta?: WorkflowMetadata;

387

}

388

389

interface NodeMetadataMap {

390

[nodeName: string]: INodeMetadata;

391

}

392

393

interface INodeMetadata {

394

parametersLastUpdatedAt?: number;

395

pinnedDataLastRemovedAt?: number;

396

pristine: boolean;

397

}

398

399

type WorkflowTitleStatus = 'EXECUTING' | 'IDLE' | 'ERROR' | 'DEBUG';

400

```