@walkeros/cli 2.1.1 → 2.2.0-next-1773136823705

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ import * as openapi_fetch from 'openapi-fetch';
8
8
  * CLI Build Configuration
9
9
  *
10
10
  * CLI-specific build options for walkerOS bundle generation.
11
- * Uses Flow.Setup and Flow.Config from @walkeros/core for config structure.
11
+ * Uses Flow.Config and Flow.Settings from @walkeros/core for config structure.
12
12
  *
13
13
  * @packageDocumentation
14
14
  */
@@ -18,7 +18,7 @@ import * as openapi_fetch from 'openapi-fetch';
18
18
  *
19
19
  * @remarks
20
20
  * These are CLI-only options not part of the config file.
21
- * The config file uses Flow.Setup from @walkeros/core.
21
+ * The config file uses Flow.Config from @walkeros/core.
22
22
  *
23
23
  * Platform-derived defaults:
24
24
  * - web: format=iife, target=es2020, platform=browser
@@ -171,7 +171,7 @@ declare function bundleCommand(options: BundleCommandOptions): Promise<void>;
171
171
  *
172
172
  * Handles configuration loading, parsing, and logger creation internally.
173
173
  *
174
- * @param configOrPath - Bundle configuration (Flow.Setup) or path to config file
174
+ * @param configOrPath - Bundle configuration (Flow.Config) or path to config file
175
175
  * @param options - Bundle options
176
176
  * @param options.silent - Suppress all output (default: false)
177
177
  * @param options.verbose - Enable verbose logging (default: false)
@@ -182,7 +182,7 @@ declare function bundleCommand(options: BundleCommandOptions): Promise<void>;
182
182
  *
183
183
  * @example
184
184
  * ```typescript
185
- * // With Flow.Setup config object
185
+ * // With Flow.Config config object
186
186
  * await bundle({
187
187
  * version: 1,
188
188
  * flows: {
@@ -339,7 +339,7 @@ interface ExampleLookupResult {
339
339
  * @param stepTarget - Optional step target in "type.name" format
340
340
  * @returns The found example with its location
341
341
  */
342
- declare function findExample(config: Flow.Config, exampleName: string, stepTarget?: string): ExampleLookupResult;
342
+ declare function findExample(config: Flow.Settings, exampleName: string, stepTarget?: string): ExampleLookupResult;
343
343
 
344
344
  /**
345
345
  * Compare simulation output against expected example output.
@@ -472,49 +472,47 @@ declare function push(configOrPath: string | unknown, event: unknown, options?:
472
472
  /**
473
473
  * Run Command Types
474
474
  *
475
- * Types for running walkerOS flows via CLI using local runtime
475
+ * Types for running walkerOS flows via CLI or Docker.
476
476
  */
477
477
  /**
478
478
  * CLI command options for `walkeros run`
479
479
  */
480
480
  interface RunCommandOptions {
481
481
  /** Flow configuration file path (.json or pre-built .mjs) */
482
- config: string;
482
+ config?: string;
483
483
  /** Server port (overrides flow config) */
484
484
  port?: number;
485
- /** Server host (default: 0.0.0.0) */
486
- host?: string;
485
+ /** Flow name for multi-flow configs */
486
+ flow?: string;
487
+ /** API flow ID (enables heartbeat, polling, secrets) */
488
+ flowId?: string;
489
+ /** Project ID */
490
+ project?: string;
487
491
  /** Enable JSON output */
488
492
  json?: boolean;
489
493
  /** Verbose logging */
490
494
  verbose?: boolean;
491
495
  /** Suppress output */
492
496
  silent?: boolean;
493
- /** Deployment slug (enables heartbeat to walkerOS app) */
494
- deployment?: string;
495
- /** Project ID (used with --deploy) */
496
- project?: string;
497
- /** Public URL of this server (used with --deploy) */
498
- url?: string;
499
- /** Health check endpoint path (used with --deploy, default: /health) */
500
- healthEndpoint?: string;
501
- /** Heartbeat interval in seconds (used with --deploy, default: 60) */
502
- heartbeatInterval?: number;
503
497
  }
504
498
  /**
505
- * Programmatic run options (subset of CLI options)
499
+ * Programmatic run options
506
500
  */
507
501
  interface RunOptions {
508
502
  /** Flow configuration file path (.json or pre-built .mjs) */
509
- config: string | unknown;
503
+ config?: string;
510
504
  /** Server port */
511
505
  port?: number;
512
- /** Server host */
513
- host?: string;
514
- /** Suppress output */
515
- silent?: boolean;
506
+ /** Flow name for multi-flow configs */
507
+ flow?: string;
508
+ /** API flow ID (enables heartbeat, polling, secrets) */
509
+ flowId?: string;
510
+ /** Project ID */
511
+ project?: string;
516
512
  /** Verbose logging */
517
513
  verbose?: boolean;
514
+ /** Suppress output */
515
+ silent?: boolean;
518
516
  }
519
517
  /**
520
518
  * Result from running a flow
@@ -533,35 +531,16 @@ interface RunResult {
533
531
  /**
534
532
  * Run Command
535
533
  *
536
- * Runs walkerOS flows using local runtime
534
+ * Unified entry point for running walkerOS flows.
535
+ * Used by both `walkeros run` (CLI) and Docker containers.
537
536
  */
538
537
 
539
538
  /**
540
539
  * CLI command function for `walkeros run`
541
- *
542
- * @param options - Command options
543
540
  */
544
541
  declare function runCommand(options: RunCommandOptions): Promise<void>;
545
542
  /**
546
543
  * Programmatic run function
547
- *
548
- * @param options - Run options
549
- * @returns Run result
550
- *
551
- * @example
552
- * ```typescript
553
- * // Run with JSON config (bundles automatically)
554
- * await run({
555
- * config: './flow.json',
556
- * port: 8080
557
- * });
558
- *
559
- * // Run with pre-built bundle
560
- * await run({
561
- * config: './flow.mjs',
562
- * port: 8080
563
- * });
564
- * ```
565
544
  */
566
545
  declare function run(options: RunOptions): Promise<RunResult>;
567
546
 
@@ -600,6 +579,8 @@ interface ValidateResult {
600
579
  /**
601
580
  * Programmatic API for validation.
602
581
  * Can be called directly from code or MCP server.
582
+ *
583
+ * Accepts parsed objects, JSON strings, file paths, or URLs as input.
603
584
  */
604
585
  declare function validate(type: ValidationType, input: unknown, options?: {
605
586
  flow?: string;
@@ -657,7 +638,7 @@ declare function listProjects(): Promise<{
657
638
  projects: {
658
639
  id: string;
659
640
  name: string;
660
- role: "owner" | "member";
641
+ role: "owner" | "admin" | "member" | "deployer" | "viewer";
661
642
  createdAt: string;
662
643
  updatedAt: string;
663
644
  }[];
@@ -668,7 +649,7 @@ declare function getProject(options?: {
668
649
  }): Promise<{
669
650
  id: string;
670
651
  name: string;
671
- role: "owner" | "member";
652
+ role: "owner" | "admin" | "member" | "deployer" | "viewer";
672
653
  createdAt: string;
673
654
  updatedAt: string;
674
655
  }>;
@@ -677,9 +658,7 @@ declare function createProject(options: {
677
658
  }): Promise<{
678
659
  id: string;
679
660
  name: string;
680
- role: "owner" | "member";
681
661
  createdAt: string;
682
- updatedAt: string;
683
662
  }>;
684
663
  declare function updateProject(options: {
685
664
  projectId?: string;
@@ -687,7 +666,7 @@ declare function updateProject(options: {
687
666
  }): Promise<{
688
667
  id: string;
689
668
  name: string;
690
- role: "owner" | "member";
669
+ role: "owner" | "admin" | "member" | "deployer" | "viewer";
691
670
  createdAt: string;
692
671
  updatedAt: string;
693
672
  }>;
@@ -718,6 +697,14 @@ declare function listFlows(options?: ListFlowsOptions): Promise<{
718
697
  flows: {
719
698
  id: string;
720
699
  name: string;
700
+ summary?: string | undefined;
701
+ settings?: {
702
+ id: string;
703
+ name: string;
704
+ platform: "web" | "server";
705
+ deploymentStatus: string | null;
706
+ deploymentUrl: string | null;
707
+ }[] | undefined;
721
708
  createdAt: string;
722
709
  updatedAt: string;
723
710
  deletedAt: string | null;
@@ -727,11 +714,12 @@ declare function listFlows(options?: ListFlowsOptions): Promise<{
727
714
  declare function getFlow(options: {
728
715
  flowId: string;
729
716
  projectId?: string;
717
+ fields?: string[];
730
718
  }): Promise<{
731
719
  id: string;
732
720
  name: string;
733
- content: {
734
- version: 1;
721
+ config: {
722
+ version: 2;
735
723
  $schema?: string | undefined;
736
724
  include?: string[] | undefined;
737
725
  variables?: {
@@ -743,10 +731,30 @@ declare function getFlow(options: {
743
731
  flows?: {
744
732
  [x: string]: unknown;
745
733
  } | undefined;
734
+ contract?: {
735
+ [x: string]: unknown;
736
+ } | undefined;
746
737
  };
738
+ settings?: {
739
+ id: string;
740
+ name: string;
741
+ platform: "web" | "server";
742
+ deployment: {
743
+ id: string;
744
+ slug: string;
745
+ status: string;
746
+ type: string;
747
+ target: string | null;
748
+ containerUrl: string | null;
749
+ createdAt: string;
750
+ updatedAt: string | null;
751
+ } | null;
752
+ createdAt: string;
753
+ updatedAt: string;
754
+ }[] | undefined;
747
755
  createdAt: string;
748
756
  updatedAt: string;
749
- deletedAt?: string | null | undefined;
757
+ deletedAt: string | null;
750
758
  }>;
751
759
  declare function createFlow(options: {
752
760
  name: string;
@@ -755,8 +763,8 @@ declare function createFlow(options: {
755
763
  }): Promise<{
756
764
  id: string;
757
765
  name: string;
758
- content: {
759
- version: 1;
766
+ config: {
767
+ version: 2;
760
768
  $schema?: string | undefined;
761
769
  include?: string[] | undefined;
762
770
  variables?: {
@@ -768,7 +776,17 @@ declare function createFlow(options: {
768
776
  flows?: {
769
777
  [x: string]: unknown;
770
778
  } | undefined;
779
+ contract?: {
780
+ [x: string]: unknown;
781
+ } | undefined;
771
782
  };
783
+ settings?: {
784
+ id: string;
785
+ name: string;
786
+ platform: "web" | "server";
787
+ createdAt: string;
788
+ updatedAt: string;
789
+ }[] | undefined;
772
790
  createdAt: string;
773
791
  updatedAt: string;
774
792
  deletedAt?: string | null | undefined;
@@ -778,11 +796,12 @@ declare function updateFlow(options: {
778
796
  name?: string;
779
797
  content?: Record<string, unknown>;
780
798
  projectId?: string;
799
+ mergePatch?: boolean;
781
800
  }): Promise<{
782
801
  id: string;
783
802
  name: string;
784
- content: {
785
- version: 1;
803
+ config: {
804
+ version: 2;
786
805
  $schema?: string | undefined;
787
806
  include?: string[] | undefined;
788
807
  variables?: {
@@ -794,11 +813,13 @@ declare function updateFlow(options: {
794
813
  flows?: {
795
814
  [x: string]: unknown;
796
815
  } | undefined;
816
+ contract?: {
817
+ [x: string]: unknown;
818
+ } | undefined;
797
819
  };
798
820
  createdAt: string;
799
821
  updatedAt: string;
800
- deletedAt?: string | null | undefined;
801
- }>;
822
+ } | undefined>;
802
823
  declare function deleteFlow(options: {
803
824
  flowId: string;
804
825
  projectId?: string;
@@ -812,8 +833,8 @@ declare function duplicateFlow(options: {
812
833
  }): Promise<{
813
834
  id: string;
814
835
  name: string;
815
- content: {
816
- version: 1;
836
+ config: {
837
+ version: 2;
817
838
  $schema?: string | undefined;
818
839
  include?: string[] | undefined;
819
840
  variables?: {
@@ -825,7 +846,17 @@ declare function duplicateFlow(options: {
825
846
  flows?: {
826
847
  [x: string]: unknown;
827
848
  } | undefined;
849
+ contract?: {
850
+ [x: string]: unknown;
851
+ } | undefined;
828
852
  };
853
+ settings?: {
854
+ id: string;
855
+ name: string;
856
+ platform: "web" | "server";
857
+ createdAt: string;
858
+ updatedAt: string;
859
+ }[] | undefined;
829
860
  createdAt: string;
830
861
  updatedAt: string;
831
862
  deletedAt?: string | null | undefined;
@@ -1099,7 +1130,7 @@ interface paths {
1099
1130
  patch?: never;
1100
1131
  trace?: never;
1101
1132
  };
1102
- '/api/projects': {
1133
+ '/api/sessions': {
1103
1134
  parameters: {
1104
1135
  query?: never;
1105
1136
  header?: never;
@@ -1107,8 +1138,8 @@ interface paths {
1107
1138
  cookie?: never;
1108
1139
  };
1109
1140
  /**
1110
- * List my projects
1111
- * @description List all projects where the authenticated user is a member.
1141
+ * List sessions
1142
+ * @description List all active sessions for the authenticated user. The current session is marked with isCurrent: true.
1112
1143
  */
1113
1144
  get: {
1114
1145
  parameters: {
@@ -1119,13 +1150,13 @@ interface paths {
1119
1150
  };
1120
1151
  requestBody?: never;
1121
1152
  responses: {
1122
- /** @description List of projects */
1153
+ /** @description List of active sessions */
1123
1154
  200: {
1124
1155
  headers: {
1125
1156
  [name: string]: unknown;
1126
1157
  };
1127
1158
  content: {
1128
- 'application/json': components['schemas']['ListProjectsResponse'];
1159
+ 'application/json': components['schemas']['ListSessionsResponse'];
1129
1160
  };
1130
1161
  };
1131
1162
  /** @description Unauthorized */
@@ -1140,34 +1171,56 @@ interface paths {
1140
1171
  };
1141
1172
  };
1142
1173
  put?: never;
1174
+ post?: never;
1175
+ delete?: never;
1176
+ options?: never;
1177
+ head?: never;
1178
+ patch?: never;
1179
+ trace?: never;
1180
+ };
1181
+ '/api/sessions/{sessionId}': {
1182
+ parameters: {
1183
+ query?: never;
1184
+ header?: never;
1185
+ path?: never;
1186
+ cookie?: never;
1187
+ };
1188
+ get?: never;
1189
+ put?: never;
1190
+ post?: never;
1143
1191
  /**
1144
- * Create project
1145
- * @description Create a new project. The authenticated user becomes the owner.
1192
+ * Revoke session
1193
+ * @description Revoke a session by ID. Cannot revoke the current session (use logout instead).
1146
1194
  */
1147
- post: {
1195
+ delete: {
1148
1196
  parameters: {
1149
1197
  query?: never;
1150
1198
  header?: never;
1151
- path?: never;
1152
- cookie?: never;
1153
- };
1154
- requestBody?: {
1155
- content: {
1156
- 'application/json': components['schemas']['CreateProjectRequest'];
1199
+ path: {
1200
+ sessionId: string;
1157
1201
  };
1202
+ cookie?: never;
1158
1203
  };
1204
+ requestBody?: never;
1159
1205
  responses: {
1160
- /** @description Project created */
1161
- 201: {
1206
+ /** @description Session revoked */
1207
+ 204: {
1208
+ headers: {
1209
+ [name: string]: unknown;
1210
+ };
1211
+ content?: never;
1212
+ };
1213
+ /** @description Unauthorized */
1214
+ 401: {
1162
1215
  headers: {
1163
1216
  [name: string]: unknown;
1164
1217
  };
1165
1218
  content: {
1166
- 'application/json': components['schemas']['Project'];
1219
+ 'application/json': components['schemas']['ErrorResponse'];
1167
1220
  };
1168
1221
  };
1169
- /** @description Validation error */
1170
- 400: {
1222
+ /** @description Forbidden */
1223
+ 403: {
1171
1224
  headers: {
1172
1225
  [name: string]: unknown;
1173
1226
  };
@@ -1175,8 +1228,8 @@ interface paths {
1175
1228
  'application/json': components['schemas']['ErrorResponse'];
1176
1229
  };
1177
1230
  };
1178
- /** @description Unauthorized */
1179
- 401: {
1231
+ /** @description Not found */
1232
+ 404: {
1180
1233
  headers: {
1181
1234
  [name: string]: unknown;
1182
1235
  };
@@ -1186,98 +1239,87 @@ interface paths {
1186
1239
  };
1187
1240
  };
1188
1241
  };
1189
- delete?: never;
1190
1242
  options?: never;
1191
1243
  head?: never;
1192
1244
  patch?: never;
1193
1245
  trace?: never;
1194
1246
  };
1195
- '/api/projects/{projectId}': {
1247
+ '/api/auth/device/code': {
1196
1248
  parameters: {
1197
1249
  query?: never;
1198
1250
  header?: never;
1199
1251
  path?: never;
1200
1252
  cookie?: never;
1201
1253
  };
1254
+ get?: never;
1255
+ put?: never;
1202
1256
  /**
1203
- * Get project
1204
- * @description Get a single project by ID. Requires membership.
1257
+ * Request device code
1258
+ * @description Generate a device code and user code for the device authorization flow.
1205
1259
  */
1206
- get: {
1260
+ post: {
1207
1261
  parameters: {
1208
1262
  query?: never;
1209
1263
  header?: never;
1210
- path: {
1211
- projectId: string;
1212
- };
1264
+ path?: never;
1213
1265
  cookie?: never;
1214
1266
  };
1215
1267
  requestBody?: never;
1216
1268
  responses: {
1217
- /** @description Project details */
1269
+ /** @description Device code generated */
1218
1270
  200: {
1219
1271
  headers: {
1220
1272
  [name: string]: unknown;
1221
1273
  };
1222
1274
  content: {
1223
- 'application/json': components['schemas']['Project'];
1224
- };
1225
- };
1226
- /** @description Unauthorized */
1227
- 401: {
1228
- headers: {
1229
- [name: string]: unknown;
1230
- };
1231
- content: {
1232
- 'application/json': components['schemas']['ErrorResponse'];
1233
- };
1234
- };
1235
- /** @description Not found */
1236
- 404: {
1237
- headers: {
1238
- [name: string]: unknown;
1239
- };
1240
- content: {
1241
- 'application/json': components['schemas']['ErrorResponse'];
1275
+ 'application/json': components['schemas']['DeviceCodeResponse'];
1242
1276
  };
1243
1277
  };
1244
1278
  };
1245
1279
  };
1280
+ delete?: never;
1281
+ options?: never;
1282
+ head?: never;
1283
+ patch?: never;
1284
+ trace?: never;
1285
+ };
1286
+ '/api/auth/device/approve': {
1287
+ parameters: {
1288
+ query?: never;
1289
+ header?: never;
1290
+ path?: never;
1291
+ cookie?: never;
1292
+ };
1293
+ get?: never;
1246
1294
  put?: never;
1247
- post?: never;
1248
1295
  /**
1249
- * Delete project
1250
- * @description Delete a project and all its resources. Requires owner role.
1296
+ * Approve device code
1297
+ * @description Approve a device authorization request using the user code. Requires authentication.
1251
1298
  */
1252
- delete: {
1299
+ post: {
1253
1300
  parameters: {
1254
1301
  query?: never;
1255
1302
  header?: never;
1256
- path: {
1257
- projectId: string;
1258
- };
1303
+ path?: never;
1259
1304
  cookie?: never;
1260
1305
  };
1261
- requestBody?: never;
1262
- responses: {
1263
- /** @description Project deleted */
1264
- 204: {
1265
- headers: {
1266
- [name: string]: unknown;
1267
- };
1268
- content?: never;
1306
+ requestBody?: {
1307
+ content: {
1308
+ 'application/json': components['schemas']['ApproveDeviceRequest'];
1269
1309
  };
1270
- /** @description Unauthorized */
1271
- 401: {
1310
+ };
1311
+ responses: {
1312
+ /** @description Device approved */
1313
+ 200: {
1272
1314
  headers: {
1273
1315
  [name: string]: unknown;
1274
1316
  };
1275
1317
  content: {
1276
- 'application/json': components['schemas']['ErrorResponse'];
1318
+ 'application/json': components['schemas']['ApproveDeviceResponse'];
1277
1319
  };
1278
1320
  };
1279
- /** @description Forbidden */
1280
- 403: {
1321
+ /** @description Unauthorized */
1322
+ 401: {
1281
1323
  headers: {
1282
1324
  [name: string]: unknown;
1283
1325
  };
@@ -1296,37 +1338,48 @@ interface paths {
1296
1338
  };
1297
1339
  };
1298
1340
  };
1341
+ delete?: never;
1299
1342
  options?: never;
1300
1343
  head?: never;
1344
+ patch?: never;
1345
+ trace?: never;
1346
+ };
1347
+ '/api/auth/device/token': {
1348
+ parameters: {
1349
+ query?: never;
1350
+ header?: never;
1351
+ path?: never;
1352
+ cookie?: never;
1353
+ };
1354
+ get?: never;
1355
+ put?: never;
1301
1356
  /**
1302
- * Update project
1303
- * @description Update project details. Requires owner role.
1357
+ * Poll device token
1358
+ * @description Poll for authorization status using the device code. Returns a token when approved.
1304
1359
  */
1305
- patch: {
1360
+ post: {
1306
1361
  parameters: {
1307
1362
  query?: never;
1308
1363
  header?: never;
1309
- path: {
1310
- projectId: string;
1311
- };
1364
+ path?: never;
1312
1365
  cookie?: never;
1313
1366
  };
1314
1367
  requestBody?: {
1315
1368
  content: {
1316
- 'application/json': components['schemas']['UpdateProjectRequest'];
1369
+ 'application/json': components['schemas']['DeviceTokenRequest'];
1317
1370
  };
1318
1371
  };
1319
1372
  responses: {
1320
- /** @description Project updated */
1373
+ /** @description Authorization approved */
1321
1374
  200: {
1322
1375
  headers: {
1323
1376
  [name: string]: unknown;
1324
1377
  };
1325
1378
  content: {
1326
- 'application/json': components['schemas']['Project'];
1379
+ 'application/json': components['schemas']['DeviceTokenResponse'];
1327
1380
  };
1328
1381
  };
1329
- /** @description Validation error */
1382
+ /** @description Pending, slow down, or expired */
1330
1383
  400: {
1331
1384
  headers: {
1332
1385
  [name: string]: unknown;
@@ -1335,38 +1388,15 @@ interface paths {
1335
1388
  'application/json': components['schemas']['ErrorResponse'];
1336
1389
  };
1337
1390
  };
1338
- /** @description Unauthorized */
1339
- 401: {
1340
- headers: {
1341
- [name: string]: unknown;
1342
- };
1343
- content: {
1344
- 'application/json': components['schemas']['ErrorResponse'];
1345
- };
1346
- };
1347
- /** @description Forbidden */
1348
- 403: {
1349
- headers: {
1350
- [name: string]: unknown;
1351
- };
1352
- content: {
1353
- 'application/json': components['schemas']['ErrorResponse'];
1354
- };
1355
- };
1356
- /** @description Not found */
1357
- 404: {
1358
- headers: {
1359
- [name: string]: unknown;
1360
- };
1361
- content: {
1362
- 'application/json': components['schemas']['ErrorResponse'];
1363
- };
1364
- };
1365
1391
  };
1366
1392
  };
1393
+ delete?: never;
1394
+ options?: never;
1395
+ head?: never;
1396
+ patch?: never;
1367
1397
  trace?: never;
1368
1398
  };
1369
- '/api/projects/{projectId}/members': {
1399
+ '/api/projects': {
1370
1400
  parameters: {
1371
1401
  query?: never;
1372
1402
  header?: never;
@@ -1374,27 +1404,25 @@ interface paths {
1374
1404
  cookie?: never;
1375
1405
  };
1376
1406
  /**
1377
- * List members
1378
- * @description List all members of a project. Requires membership.
1407
+ * List my projects
1408
+ * @description List all projects where the authenticated user is a member.
1379
1409
  */
1380
1410
  get: {
1381
1411
  parameters: {
1382
1412
  query?: never;
1383
1413
  header?: never;
1384
- path: {
1385
- projectId: string;
1386
- };
1414
+ path?: never;
1387
1415
  cookie?: never;
1388
1416
  };
1389
1417
  requestBody?: never;
1390
1418
  responses: {
1391
- /** @description List of members */
1419
+ /** @description List of projects */
1392
1420
  200: {
1393
1421
  headers: {
1394
1422
  [name: string]: unknown;
1395
1423
  };
1396
1424
  content: {
1397
- 'application/json': components['schemas']['ListMembersResponse'];
1425
+ 'application/json': components['schemas']['ListProjectsResponse'];
1398
1426
  };
1399
1427
  };
1400
1428
  /** @description Unauthorized */
@@ -1406,44 +1434,33 @@ interface paths {
1406
1434
  'application/json': components['schemas']['ErrorResponse'];
1407
1435
  };
1408
1436
  };
1409
- /** @description Not found */
1410
- 404: {
1411
- headers: {
1412
- [name: string]: unknown;
1413
- };
1414
- content: {
1415
- 'application/json': components['schemas']['ErrorResponse'];
1416
- };
1417
- };
1418
1437
  };
1419
1438
  };
1420
1439
  put?: never;
1421
1440
  /**
1422
- * Add member
1423
- * @description Add a member to the project by email. Requires owner role.
1441
+ * Create project
1442
+ * @description Create a new project. The authenticated user becomes the owner.
1424
1443
  */
1425
1444
  post: {
1426
1445
  parameters: {
1427
1446
  query?: never;
1428
1447
  header?: never;
1429
- path: {
1430
- projectId: string;
1431
- };
1448
+ path?: never;
1432
1449
  cookie?: never;
1433
1450
  };
1434
1451
  requestBody?: {
1435
1452
  content: {
1436
- 'application/json': components['schemas']['AddMemberRequest'];
1453
+ 'application/json': components['schemas']['CreateProjectRequest'];
1437
1454
  };
1438
1455
  };
1439
1456
  responses: {
1440
- /** @description Member added */
1457
+ /** @description Project created */
1441
1458
  201: {
1442
1459
  headers: {
1443
1460
  [name: string]: unknown;
1444
1461
  };
1445
1462
  content: {
1446
- 'application/json': components['schemas']['Member'];
1463
+ 'application/json': components['schemas']['CreateProjectResponse'];
1447
1464
  };
1448
1465
  };
1449
1466
  /** @description Validation error */
@@ -1464,17 +1481,47 @@ interface paths {
1464
1481
  'application/json': components['schemas']['ErrorResponse'];
1465
1482
  };
1466
1483
  };
1467
- /** @description Forbidden */
1468
- 403: {
1484
+ };
1485
+ };
1486
+ delete?: never;
1487
+ options?: never;
1488
+ head?: never;
1489
+ patch?: never;
1490
+ trace?: never;
1491
+ };
1492
+ '/api/projects/{projectId}': {
1493
+ parameters: {
1494
+ query?: never;
1495
+ header?: never;
1496
+ path?: never;
1497
+ cookie?: never;
1498
+ };
1499
+ /**
1500
+ * Get project
1501
+ * @description Get a single project by ID. Requires membership.
1502
+ */
1503
+ get: {
1504
+ parameters: {
1505
+ query?: never;
1506
+ header?: never;
1507
+ path: {
1508
+ projectId: string;
1509
+ };
1510
+ cookie?: never;
1511
+ };
1512
+ requestBody?: never;
1513
+ responses: {
1514
+ /** @description Project details */
1515
+ 200: {
1469
1516
  headers: {
1470
1517
  [name: string]: unknown;
1471
1518
  };
1472
1519
  content: {
1473
- 'application/json': components['schemas']['ErrorResponse'];
1520
+ 'application/json': components['schemas']['Project'];
1474
1521
  };
1475
1522
  };
1476
- /** @description Not found */
1477
- 404: {
1523
+ /** @description Unauthorized */
1524
+ 401: {
1478
1525
  headers: {
1479
1526
  [name: string]: unknown;
1480
1527
  };
@@ -1482,8 +1529,8 @@ interface paths {
1482
1529
  'application/json': components['schemas']['ErrorResponse'];
1483
1530
  };
1484
1531
  };
1485
- /** @description Conflict */
1486
- 409: {
1532
+ /** @description Not found */
1533
+ 404: {
1487
1534
  headers: {
1488
1535
  [name: string]: unknown;
1489
1536
  };
@@ -1493,25 +1540,11 @@ interface paths {
1493
1540
  };
1494
1541
  };
1495
1542
  };
1496
- delete?: never;
1497
- options?: never;
1498
- head?: never;
1499
- patch?: never;
1500
- trace?: never;
1501
- };
1502
- '/api/projects/{projectId}/members/{userId}': {
1503
- parameters: {
1504
- query?: never;
1505
- header?: never;
1506
- path?: never;
1507
- cookie?: never;
1508
- };
1509
- get?: never;
1510
1543
  put?: never;
1511
1544
  post?: never;
1512
1545
  /**
1513
- * Remove member
1514
- * @description Remove a member from the project. Requires owner role.
1546
+ * Delete project
1547
+ * @description Delete a project and all its resources. Requires owner role.
1515
1548
  */
1516
1549
  delete: {
1517
1550
  parameters: {
@@ -1519,13 +1552,12 @@ interface paths {
1519
1552
  header?: never;
1520
1553
  path: {
1521
1554
  projectId: string;
1522
- userId: string;
1523
1555
  };
1524
1556
  cookie?: never;
1525
1557
  };
1526
1558
  requestBody?: never;
1527
1559
  responses: {
1528
- /** @description Member removed */
1560
+ /** @description Project deleted */
1529
1561
  204: {
1530
1562
  headers: {
1531
1563
  [name: string]: unknown;
@@ -1564,8 +1596,8 @@ interface paths {
1564
1596
  options?: never;
1565
1597
  head?: never;
1566
1598
  /**
1567
- * Update member role
1568
- * @description Update a member's role. Requires owner role.
1599
+ * Update project
1600
+ * @description Update project details. Requires owner role.
1569
1601
  */
1570
1602
  patch: {
1571
1603
  parameters: {
@@ -1573,23 +1605,22 @@ interface paths {
1573
1605
  header?: never;
1574
1606
  path: {
1575
1607
  projectId: string;
1576
- userId: string;
1577
1608
  };
1578
1609
  cookie?: never;
1579
1610
  };
1580
1611
  requestBody?: {
1581
1612
  content: {
1582
- 'application/json': components['schemas']['UpdateMemberRequest'];
1613
+ 'application/json': components['schemas']['UpdateProjectRequest'];
1583
1614
  };
1584
1615
  };
1585
1616
  responses: {
1586
- /** @description Role updated */
1617
+ /** @description Project updated */
1587
1618
  200: {
1588
1619
  headers: {
1589
1620
  [name: string]: unknown;
1590
1621
  };
1591
1622
  content: {
1592
- 'application/json': components['schemas']['Member'];
1623
+ 'application/json': components['schemas']['Project'];
1593
1624
  };
1594
1625
  };
1595
1626
  /** @description Validation error */
@@ -1632,7 +1663,7 @@ interface paths {
1632
1663
  };
1633
1664
  trace?: never;
1634
1665
  };
1635
- '/api/projects/{projectId}/flows': {
1666
+ '/api/projects/{projectId}/members': {
1636
1667
  parameters: {
1637
1668
  query?: never;
1638
1669
  header?: never;
@@ -1640,16 +1671,12 @@ interface paths {
1640
1671
  cookie?: never;
1641
1672
  };
1642
1673
  /**
1643
- * List flows
1644
- * @description List all flows for a project.
1674
+ * List members
1675
+ * @description List all members of a project. Requires membership.
1645
1676
  */
1646
1677
  get: {
1647
1678
  parameters: {
1648
- query?: {
1649
- sort?: 'name' | 'updated_at' | 'created_at';
1650
- order?: 'asc' | 'desc';
1651
- include_deleted?: 'true' | 'false';
1652
- };
1679
+ query?: never;
1653
1680
  header?: never;
1654
1681
  path: {
1655
1682
  projectId: string;
@@ -1658,13 +1685,13 @@ interface paths {
1658
1685
  };
1659
1686
  requestBody?: never;
1660
1687
  responses: {
1661
- /** @description List of flows */
1688
+ /** @description List of members */
1662
1689
  200: {
1663
1690
  headers: {
1664
1691
  [name: string]: unknown;
1665
1692
  };
1666
1693
  content: {
1667
- 'application/json': components['schemas']['ListFlowsResponse'];
1694
+ 'application/json': components['schemas']['ListMembersResponse'];
1668
1695
  };
1669
1696
  };
1670
1697
  /** @description Unauthorized */
@@ -1689,8 +1716,8 @@ interface paths {
1689
1716
  };
1690
1717
  put?: never;
1691
1718
  /**
1692
- * Create flow
1693
- * @description Create a new flow in the project. Requires owner role.
1719
+ * Add member
1720
+ * @description Add a member to the project by email. Requires owner role.
1694
1721
  */
1695
1722
  post: {
1696
1723
  parameters: {
@@ -1703,17 +1730,17 @@ interface paths {
1703
1730
  };
1704
1731
  requestBody?: {
1705
1732
  content: {
1706
- 'application/json': components['schemas']['CreateFlowRequest'];
1733
+ 'application/json': components['schemas']['AddMemberRequest'];
1707
1734
  };
1708
1735
  };
1709
1736
  responses: {
1710
- /** @description Flow created */
1737
+ /** @description Member added */
1711
1738
  201: {
1712
1739
  headers: {
1713
1740
  [name: string]: unknown;
1714
1741
  };
1715
1742
  content: {
1716
- 'application/json': components['schemas']['Flow'];
1743
+ 'application/json': components['schemas']['Member'];
1717
1744
  };
1718
1745
  };
1719
1746
  /** @description Validation error */
@@ -1743,6 +1770,15 @@ interface paths {
1743
1770
  'application/json': components['schemas']['ErrorResponse'];
1744
1771
  };
1745
1772
  };
1773
+ /** @description Not found */
1774
+ 404: {
1775
+ headers: {
1776
+ [name: string]: unknown;
1777
+ };
1778
+ content: {
1779
+ 'application/json': components['schemas']['ErrorResponse'];
1780
+ };
1781
+ };
1746
1782
  /** @description Conflict */
1747
1783
  409: {
1748
1784
  headers: {
@@ -1760,63 +1796,19 @@ interface paths {
1760
1796
  patch?: never;
1761
1797
  trace?: never;
1762
1798
  };
1763
- '/api/projects/{projectId}/flows/{flowId}': {
1799
+ '/api/projects/{projectId}/members/{userId}': {
1764
1800
  parameters: {
1765
1801
  query?: never;
1766
1802
  header?: never;
1767
1803
  path?: never;
1768
1804
  cookie?: never;
1769
1805
  };
1770
- /**
1771
- * Get flow
1772
- * @description Get a single flow by ID.
1773
- */
1774
- get: {
1775
- parameters: {
1776
- query?: never;
1777
- header?: never;
1778
- path: {
1779
- projectId: string;
1780
- flowId: string;
1781
- };
1782
- cookie?: never;
1783
- };
1784
- requestBody?: never;
1785
- responses: {
1786
- /** @description Flow details */
1787
- 200: {
1788
- headers: {
1789
- [name: string]: unknown;
1790
- };
1791
- content: {
1792
- 'application/json': components['schemas']['Flow'];
1793
- };
1794
- };
1795
- /** @description Unauthorized */
1796
- 401: {
1797
- headers: {
1798
- [name: string]: unknown;
1799
- };
1800
- content: {
1801
- 'application/json': components['schemas']['ErrorResponse'];
1802
- };
1803
- };
1804
- /** @description Not found */
1805
- 404: {
1806
- headers: {
1807
- [name: string]: unknown;
1808
- };
1809
- content: {
1810
- 'application/json': components['schemas']['ErrorResponse'];
1811
- };
1812
- };
1813
- };
1814
- };
1806
+ get?: never;
1815
1807
  put?: never;
1816
1808
  post?: never;
1817
1809
  /**
1818
- * Soft-delete flow
1819
- * @description Soft delete a flow (sets deleted_at timestamp). Requires owner role.
1810
+ * Remove member
1811
+ * @description Remove a member from the project. Requires owner role.
1820
1812
  */
1821
1813
  delete: {
1822
1814
  parameters: {
@@ -1824,13 +1816,13 @@ interface paths {
1824
1816
  header?: never;
1825
1817
  path: {
1826
1818
  projectId: string;
1827
- flowId: string;
1819
+ userId: string;
1828
1820
  };
1829
1821
  cookie?: never;
1830
1822
  };
1831
1823
  requestBody?: never;
1832
1824
  responses: {
1833
- /** @description Flow deleted */
1825
+ /** @description Member removed */
1834
1826
  204: {
1835
1827
  headers: {
1836
1828
  [name: string]: unknown;
@@ -1869,8 +1861,8 @@ interface paths {
1869
1861
  options?: never;
1870
1862
  head?: never;
1871
1863
  /**
1872
- * Update flow
1873
- * @description Update an existing flow. Creates a version snapshot before applying changes. Requires owner role.
1864
+ * Update member role
1865
+ * @description Update a member's role. Requires owner role.
1874
1866
  */
1875
1867
  patch: {
1876
1868
  parameters: {
@@ -1878,23 +1870,23 @@ interface paths {
1878
1870
  header?: never;
1879
1871
  path: {
1880
1872
  projectId: string;
1881
- flowId: string;
1873
+ userId: string;
1882
1874
  };
1883
1875
  cookie?: never;
1884
1876
  };
1885
1877
  requestBody?: {
1886
1878
  content: {
1887
- 'application/json': components['schemas']['UpdateFlowRequest'];
1879
+ 'application/json': components['schemas']['UpdateMemberRequest'];
1888
1880
  };
1889
1881
  };
1890
1882
  responses: {
1891
- /** @description Flow updated */
1883
+ /** @description Role updated */
1892
1884
  200: {
1893
1885
  headers: {
1894
1886
  [name: string]: unknown;
1895
1887
  };
1896
1888
  content: {
1897
- 'application/json': components['schemas']['Flow'];
1889
+ 'application/json': components['schemas']['Member'];
1898
1890
  };
1899
1891
  };
1900
1892
  /** @description Validation error */
@@ -1933,31 +1925,69 @@ interface paths {
1933
1925
  'application/json': components['schemas']['ErrorResponse'];
1934
1926
  };
1935
1927
  };
1936
- /** @description Conflict */
1937
- 409: {
1938
- headers: {
1939
- [name: string]: unknown;
1940
- };
1941
- content: {
1942
- 'application/json': components['schemas']['ErrorResponse'];
1943
- };
1944
- };
1945
1928
  };
1946
1929
  };
1947
1930
  trace?: never;
1948
1931
  };
1949
- '/api/projects/{projectId}/flows/{flowId}/duplicate': {
1932
+ '/api/projects/{projectId}/flows': {
1950
1933
  parameters: {
1951
1934
  query?: never;
1952
1935
  header?: never;
1953
1936
  path?: never;
1954
1937
  cookie?: never;
1955
1938
  };
1956
- get?: never;
1939
+ /**
1940
+ * List flows
1941
+ * @description List all flows for a project.
1942
+ */
1943
+ get: {
1944
+ parameters: {
1945
+ query?: {
1946
+ sort?: 'name' | 'updated_at' | 'created_at';
1947
+ order?: 'asc' | 'desc';
1948
+ include_deleted?: 'true' | 'false';
1949
+ };
1950
+ header?: never;
1951
+ path: {
1952
+ projectId: string;
1953
+ };
1954
+ cookie?: never;
1955
+ };
1956
+ requestBody?: never;
1957
+ responses: {
1958
+ /** @description List of flows */
1959
+ 200: {
1960
+ headers: {
1961
+ [name: string]: unknown;
1962
+ };
1963
+ content: {
1964
+ 'application/json': components['schemas']['ListFlowsResponse'];
1965
+ };
1966
+ };
1967
+ /** @description Unauthorized */
1968
+ 401: {
1969
+ headers: {
1970
+ [name: string]: unknown;
1971
+ };
1972
+ content: {
1973
+ 'application/json': components['schemas']['ErrorResponse'];
1974
+ };
1975
+ };
1976
+ /** @description Not found */
1977
+ 404: {
1978
+ headers: {
1979
+ [name: string]: unknown;
1980
+ };
1981
+ content: {
1982
+ 'application/json': components['schemas']['ErrorResponse'];
1983
+ };
1984
+ };
1985
+ };
1986
+ };
1957
1987
  put?: never;
1958
1988
  /**
1959
- * Duplicate flow
1960
- * @description Create a copy of an existing flow with a new ID and no version history. Requires owner role.
1989
+ * Create flow
1990
+ * @description Create a new flow in the project. Requires owner role.
1961
1991
  */
1962
1992
  post: {
1963
1993
  parameters: {
@@ -1965,17 +1995,16 @@ interface paths {
1965
1995
  header?: never;
1966
1996
  path: {
1967
1997
  projectId: string;
1968
- flowId: string;
1969
1998
  };
1970
1999
  cookie?: never;
1971
2000
  };
1972
2001
  requestBody?: {
1973
2002
  content: {
1974
- 'application/json': components['schemas']['DuplicateFlowRequest'];
2003
+ 'application/json': components['schemas']['CreateFlowRequest'];
1975
2004
  };
1976
2005
  };
1977
2006
  responses: {
1978
- /** @description Flow duplicated */
2007
+ /** @description Flow created */
1979
2008
  201: {
1980
2009
  headers: {
1981
2010
  [name: string]: unknown;
@@ -2011,15 +2040,6 @@ interface paths {
2011
2040
  'application/json': components['schemas']['ErrorResponse'];
2012
2041
  };
2013
2042
  };
2014
- /** @description Not found */
2015
- 404: {
2016
- headers: {
2017
- [name: string]: unknown;
2018
- };
2019
- content: {
2020
- 'application/json': components['schemas']['ErrorResponse'];
2021
- };
2022
- };
2023
2043
  /** @description Conflict */
2024
2044
  409: {
2025
2045
  headers: {
@@ -2037,7 +2057,7 @@ interface paths {
2037
2057
  patch?: never;
2038
2058
  trace?: never;
2039
2059
  };
2040
- '/api/projects/{projectId}/flows/{flowId}/versions': {
2060
+ '/api/projects/{projectId}/flows/{flowId}': {
2041
2061
  parameters: {
2042
2062
  query?: never;
2043
2063
  header?: never;
@@ -2045,12 +2065,15 @@ interface paths {
2045
2065
  cookie?: never;
2046
2066
  };
2047
2067
  /**
2048
- * List versions
2049
- * @description List all versions for a flow.
2068
+ * Get flow
2069
+ * @description Get a single flow by ID. Use ?fields to select specific sections (reduces response size).
2050
2070
  */
2051
2071
  get: {
2052
2072
  parameters: {
2053
- query?: never;
2073
+ query?: {
2074
+ /** @description Comma-separated dot-paths to select specific fields (e.g., "content.variables,content.flows.web.sources"). Always includes id, createdAt, updatedAt. */
2075
+ fields?: string;
2076
+ };
2054
2077
  header?: never;
2055
2078
  path: {
2056
2079
  projectId: string;
@@ -2060,13 +2083,13 @@ interface paths {
2060
2083
  };
2061
2084
  requestBody?: never;
2062
2085
  responses: {
2063
- /** @description List of versions */
2086
+ /** @description Flow details */
2064
2087
  200: {
2065
2088
  headers: {
2066
2089
  [name: string]: unknown;
2067
2090
  };
2068
2091
  content: {
2069
- 'application/json': components['schemas']['ListVersionsResponse'];
2092
+ 'application/json': components['schemas']['FlowDetailResponse'];
2070
2093
  };
2071
2094
  };
2072
2095
  /** @description Unauthorized */
@@ -2091,43 +2114,110 @@ interface paths {
2091
2114
  };
2092
2115
  put?: never;
2093
2116
  post?: never;
2094
- delete?: never;
2117
+ /**
2118
+ * Soft-delete flow
2119
+ * @description Soft delete a flow (sets deleted_at timestamp). Requires owner role.
2120
+ */
2121
+ delete: {
2122
+ parameters: {
2123
+ query?: never;
2124
+ header?: {
2125
+ /** @description ETag from a previous GET. Returns 412 if flow was modified since. */
2126
+ 'if-match'?: string;
2127
+ };
2128
+ path: {
2129
+ projectId: string;
2130
+ flowId: string;
2131
+ };
2132
+ cookie?: never;
2133
+ };
2134
+ requestBody?: never;
2135
+ responses: {
2136
+ /** @description Flow deleted */
2137
+ 204: {
2138
+ headers: {
2139
+ [name: string]: unknown;
2140
+ };
2141
+ content?: never;
2142
+ };
2143
+ /** @description Unauthorized */
2144
+ 401: {
2145
+ headers: {
2146
+ [name: string]: unknown;
2147
+ };
2148
+ content: {
2149
+ 'application/json': components['schemas']['ErrorResponse'];
2150
+ };
2151
+ };
2152
+ /** @description Forbidden */
2153
+ 403: {
2154
+ headers: {
2155
+ [name: string]: unknown;
2156
+ };
2157
+ content: {
2158
+ 'application/json': components['schemas']['ErrorResponse'];
2159
+ };
2160
+ };
2161
+ /** @description Not found */
2162
+ 404: {
2163
+ headers: {
2164
+ [name: string]: unknown;
2165
+ };
2166
+ content: {
2167
+ 'application/json': components['schemas']['ErrorResponse'];
2168
+ };
2169
+ };
2170
+ /** @description ETag mismatch — flow was modified since last read */
2171
+ 412: {
2172
+ headers: {
2173
+ [name: string]: unknown;
2174
+ };
2175
+ content?: never;
2176
+ };
2177
+ };
2178
+ };
2095
2179
  options?: never;
2096
2180
  head?: never;
2097
- patch?: never;
2098
- trace?: never;
2099
- };
2100
- '/api/projects/{projectId}/flows/{flowId}/versions/{versionNumber}': {
2101
- parameters: {
2102
- query?: never;
2103
- header?: never;
2104
- path?: never;
2105
- cookie?: never;
2106
- };
2107
2181
  /**
2108
- * Get version
2109
- * @description Get a specific version of a flow.
2182
+ * Update flow
2183
+ * @description Update an existing flow. Creates a version snapshot before applying changes. Requires owner role. Use Content-Type: application/merge-patch+json to send only changed fields (RFC 7386).
2110
2184
  */
2111
- get: {
2185
+ patch: {
2112
2186
  parameters: {
2113
2187
  query?: never;
2114
- header?: never;
2188
+ header?: {
2189
+ /** @description ETag from a previous GET. Returns 412 if flow was modified since. */
2190
+ 'if-match'?: string;
2191
+ };
2115
2192
  path: {
2116
2193
  projectId: string;
2117
2194
  flowId: string;
2118
- versionNumber: number;
2119
2195
  };
2120
2196
  cookie?: never;
2121
2197
  };
2122
- requestBody?: never;
2198
+ requestBody?: {
2199
+ content: {
2200
+ 'application/json': components['schemas']['UpdateFlowRequest'];
2201
+ 'application/merge-patch+json': components['schemas']['UpdateFlowRequest'];
2202
+ };
2203
+ };
2123
2204
  responses: {
2124
- /** @description Version details with content */
2205
+ /** @description Flow updated */
2125
2206
  200: {
2126
2207
  headers: {
2127
2208
  [name: string]: unknown;
2128
2209
  };
2129
2210
  content: {
2130
- 'application/json': components['schemas']['GetVersionResponse'];
2211
+ 'application/json': components['schemas']['FlowUpdateResponse'];
2212
+ };
2213
+ };
2214
+ /** @description Validation error */
2215
+ 400: {
2216
+ headers: {
2217
+ [name: string]: unknown;
2218
+ };
2219
+ content: {
2220
+ 'application/json': components['schemas']['ErrorResponse'];
2131
2221
  };
2132
2222
  };
2133
2223
  /** @description Unauthorized */
@@ -2139,6 +2229,15 @@ interface paths {
2139
2229
  'application/json': components['schemas']['ErrorResponse'];
2140
2230
  };
2141
2231
  };
2232
+ /** @description Forbidden */
2233
+ 403: {
2234
+ headers: {
2235
+ [name: string]: unknown;
2236
+ };
2237
+ content: {
2238
+ 'application/json': components['schemas']['ErrorResponse'];
2239
+ };
2240
+ };
2142
2241
  /** @description Not found */
2143
2242
  404: {
2144
2243
  headers: {
@@ -2148,17 +2247,27 @@ interface paths {
2148
2247
  'application/json': components['schemas']['ErrorResponse'];
2149
2248
  };
2150
2249
  };
2250
+ /** @description Conflict */
2251
+ 409: {
2252
+ headers: {
2253
+ [name: string]: unknown;
2254
+ };
2255
+ content: {
2256
+ 'application/json': components['schemas']['ErrorResponse'];
2257
+ };
2258
+ };
2259
+ /** @description ETag mismatch — flow was modified since last read */
2260
+ 412: {
2261
+ headers: {
2262
+ [name: string]: unknown;
2263
+ };
2264
+ content?: never;
2265
+ };
2151
2266
  };
2152
2267
  };
2153
- put?: never;
2154
- post?: never;
2155
- delete?: never;
2156
- options?: never;
2157
- head?: never;
2158
- patch?: never;
2159
2268
  trace?: never;
2160
2269
  };
2161
- '/api/projects/{projectId}/flows/{flowId}/versions/{versionNumber}/restore': {
2270
+ '/api/projects/{projectId}/flows/{flowId}/duplicate': {
2162
2271
  parameters: {
2163
2272
  query?: never;
2164
2273
  header?: never;
@@ -2168,8 +2277,8 @@ interface paths {
2168
2277
  get?: never;
2169
2278
  put?: never;
2170
2279
  /**
2171
- * Restore version
2172
- * @description Restore a flow to a specific version. Creates a new version snapshot. Requires owner role.
2280
+ * Duplicate flow
2281
+ * @description Create a copy of an existing flow with a new ID and no version history. Requires owner role.
2173
2282
  */
2174
2283
  post: {
2175
2284
  parameters: {
@@ -2178,14 +2287,17 @@ interface paths {
2178
2287
  path: {
2179
2288
  projectId: string;
2180
2289
  flowId: string;
2181
- versionNumber: number;
2182
2290
  };
2183
2291
  cookie?: never;
2184
2292
  };
2185
- requestBody?: never;
2293
+ requestBody?: {
2294
+ content: {
2295
+ 'application/json': components['schemas']['DuplicateFlowRequest'];
2296
+ };
2297
+ };
2186
2298
  responses: {
2187
- /** @description Flow restored */
2188
- 200: {
2299
+ /** @description Flow duplicated */
2300
+ 201: {
2189
2301
  headers: {
2190
2302
  [name: string]: unknown;
2191
2303
  };
@@ -2193,6 +2305,15 @@ interface paths {
2193
2305
  'application/json': components['schemas']['Flow'];
2194
2306
  };
2195
2307
  };
2308
+ /** @description Validation error */
2309
+ 400: {
2310
+ headers: {
2311
+ [name: string]: unknown;
2312
+ };
2313
+ content: {
2314
+ 'application/json': components['schemas']['ErrorResponse'];
2315
+ };
2316
+ };
2196
2317
  /** @description Unauthorized */
2197
2318
  401: {
2198
2319
  headers: {
@@ -2220,6 +2341,15 @@ interface paths {
2220
2341
  'application/json': components['schemas']['ErrorResponse'];
2221
2342
  };
2222
2343
  };
2344
+ /** @description Conflict */
2345
+ 409: {
2346
+ headers: {
2347
+ [name: string]: unknown;
2348
+ };
2349
+ content: {
2350
+ 'application/json': components['schemas']['ErrorResponse'];
2351
+ };
2352
+ };
2223
2353
  };
2224
2354
  };
2225
2355
  delete?: never;
@@ -2228,7 +2358,7 @@ interface paths {
2228
2358
  patch?: never;
2229
2359
  trace?: never;
2230
2360
  };
2231
- '/api/tokens': {
2361
+ '/api/projects/{projectId}/flows/{flowId}/deploy': {
2232
2362
  parameters: {
2233
2363
  query?: never;
2234
2364
  header?: never;
@@ -2236,25 +2366,28 @@ interface paths {
2236
2366
  cookie?: never;
2237
2367
  };
2238
2368
  /**
2239
- * List my tokens
2240
- * @description List all API tokens for the authenticated user. Returns summaries (no raw token values).
2369
+ * Get latest deployment
2370
+ * @description Get the latest deployment for a flow.
2241
2371
  */
2242
2372
  get: {
2243
2373
  parameters: {
2244
2374
  query?: never;
2245
2375
  header?: never;
2246
- path?: never;
2376
+ path: {
2377
+ projectId: string;
2378
+ flowId: string;
2379
+ };
2247
2380
  cookie?: never;
2248
2381
  };
2249
2382
  requestBody?: never;
2250
2383
  responses: {
2251
- /** @description List of tokens */
2384
+ /** @description Latest deployment (or null) */
2252
2385
  200: {
2253
2386
  headers: {
2254
2387
  [name: string]: unknown;
2255
2388
  };
2256
2389
  content: {
2257
- 'application/json': components['schemas']['ListApiTokensResponse'];
2390
+ 'application/json': components['schemas']['DeploymentResponse'];
2258
2391
  };
2259
2392
  };
2260
2393
  /** @description Unauthorized */
@@ -2266,33 +2399,41 @@ interface paths {
2266
2399
  'application/json': components['schemas']['ErrorResponse'];
2267
2400
  };
2268
2401
  };
2402
+ /** @description Not found */
2403
+ 404: {
2404
+ headers: {
2405
+ [name: string]: unknown;
2406
+ };
2407
+ content: {
2408
+ 'application/json': components['schemas']['ErrorResponse'];
2409
+ };
2410
+ };
2269
2411
  };
2270
2412
  };
2271
2413
  put?: never;
2272
2414
  /**
2273
- * Create token
2274
- * @description Create a new API token. The raw token is returned once and cannot be retrieved again.
2415
+ * Start deployment
2416
+ * @description Start a new deployment for a flow. Returns 400 AMBIGUOUS_CONFIG if the flow has multiple named settings — use the per-settings deploy endpoint instead.
2275
2417
  */
2276
2418
  post: {
2277
2419
  parameters: {
2278
2420
  query?: never;
2279
2421
  header?: never;
2280
- path?: never;
2281
- cookie?: never;
2282
- };
2283
- requestBody?: {
2284
- content: {
2285
- 'application/json': components['schemas']['CreateApiTokenRequest'];
2422
+ path: {
2423
+ projectId: string;
2424
+ flowId: string;
2286
2425
  };
2426
+ cookie?: never;
2287
2427
  };
2428
+ requestBody?: never;
2288
2429
  responses: {
2289
- /** @description Token created (raw token shown once) */
2430
+ /** @description Deployment started */
2290
2431
  201: {
2291
2432
  headers: {
2292
2433
  [name: string]: unknown;
2293
2434
  };
2294
2435
  content: {
2295
- 'application/json': components['schemas']['CreateApiTokenResponse'];
2436
+ 'application/json': components['schemas']['StartDeploymentResponse'];
2296
2437
  };
2297
2438
  };
2298
2439
  /** @description Validation error */
@@ -2313,7 +2454,16 @@ interface paths {
2313
2454
  'application/json': components['schemas']['ErrorResponse'];
2314
2455
  };
2315
2456
  };
2316
- /** @description Conflict */
2457
+ /** @description Not found */
2458
+ 404: {
2459
+ headers: {
2460
+ [name: string]: unknown;
2461
+ };
2462
+ content: {
2463
+ 'application/json': components['schemas']['ErrorResponse'];
2464
+ };
2465
+ };
2466
+ /** @description Deployment already in progress */
2317
2467
  409: {
2318
2468
  headers: {
2319
2469
  [name: string]: unknown;
@@ -2322,6 +2472,15 @@ interface paths {
2322
2472
  'application/json': components['schemas']['ErrorResponse'];
2323
2473
  };
2324
2474
  };
2475
+ /** @description Service unavailable */
2476
+ 503: {
2477
+ headers: {
2478
+ [name: string]: unknown;
2479
+ };
2480
+ content: {
2481
+ 'application/json': components['schemas']['ErrorResponse'];
2482
+ };
2483
+ };
2325
2484
  };
2326
2485
  };
2327
2486
  delete?: never;
@@ -2330,37 +2489,38 @@ interface paths {
2330
2489
  patch?: never;
2331
2490
  trace?: never;
2332
2491
  };
2333
- '/api/tokens/{tokenId}': {
2492
+ '/api/projects/{projectId}/flows/{flowId}/deploy/{deploymentId}': {
2334
2493
  parameters: {
2335
2494
  query?: never;
2336
2495
  header?: never;
2337
2496
  path?: never;
2338
2497
  cookie?: never;
2339
2498
  };
2340
- get?: never;
2341
- put?: never;
2342
- post?: never;
2343
2499
  /**
2344
- * Revoke token
2345
- * @description Revoke an API token (soft delete via revokedAt timestamp).
2500
+ * Get deployment
2501
+ * @description Get a specific deployment by ID.
2346
2502
  */
2347
- delete: {
2503
+ get: {
2348
2504
  parameters: {
2349
2505
  query?: never;
2350
2506
  header?: never;
2351
2507
  path: {
2352
- tokenId: string;
2508
+ projectId: string;
2509
+ flowId: string;
2510
+ deploymentId: string;
2353
2511
  };
2354
2512
  cookie?: never;
2355
2513
  };
2356
2514
  requestBody?: never;
2357
2515
  responses: {
2358
- /** @description Token revoked */
2359
- 204: {
2516
+ /** @description Deployment details */
2517
+ 200: {
2360
2518
  headers: {
2361
2519
  [name: string]: unknown;
2362
2520
  };
2363
- content?: never;
2521
+ content: {
2522
+ 'application/json': components['schemas']['DeploymentDetailResponse'];
2523
+ };
2364
2524
  };
2365
2525
  /** @description Unauthorized */
2366
2526
  401: {
@@ -2371,53 +2531,51 @@ interface paths {
2371
2531
  'application/json': components['schemas']['ErrorResponse'];
2372
2532
  };
2373
2533
  };
2374
- };
2375
- };
2376
- options?: never;
2377
- head?: never;
2378
- patch?: never;
2379
- trace?: never;
2380
- };
2381
- '/api/bundle': {
2382
- parameters: {
2383
- query?: never;
2384
- header?: never;
2385
- path?: never;
2386
- cookie?: never;
2534
+ /** @description Not found */
2535
+ 404: {
2536
+ headers: {
2537
+ [name: string]: unknown;
2538
+ };
2539
+ content: {
2540
+ 'application/json': components['schemas']['ErrorResponse'];
2541
+ };
2542
+ };
2543
+ };
2387
2544
  };
2388
- get?: never;
2389
2545
  put?: never;
2546
+ post?: never;
2390
2547
  /**
2391
- * Bundle flow
2392
- * @description Bundle a walkerOS flow into a deployable JavaScript module.
2548
+ * Delete deployment
2549
+ * @description Delete a deployment and its container. Requires owner role.
2393
2550
  */
2394
- post: {
2551
+ delete: {
2395
2552
  parameters: {
2396
2553
  query?: never;
2397
2554
  header?: never;
2398
- path?: never;
2399
- cookie?: never;
2400
- };
2401
- /** @description Flow content to bundle */
2402
- requestBody?: {
2403
- content: {
2404
- 'application/json': {
2405
- [key: string]: unknown;
2406
- };
2555
+ path: {
2556
+ projectId: string;
2557
+ flowId: string;
2558
+ deploymentId: string;
2407
2559
  };
2560
+ cookie?: never;
2408
2561
  };
2562
+ requestBody?: never;
2409
2563
  responses: {
2410
- /** @description Bundled JavaScript module */
2564
+ /** @description Deployment deleted */
2411
2565
  200: {
2412
2566
  headers: {
2413
2567
  [name: string]: unknown;
2414
2568
  };
2415
2569
  content: {
2416
- 'application/javascript': string;
2570
+ 'application/json': {
2571
+ id: string;
2572
+ /** @enum {string} */
2573
+ status: 'deleted';
2574
+ };
2417
2575
  };
2418
2576
  };
2419
- /** @description Validation error */
2420
- 400: {
2577
+ /** @description Unauthorized */
2578
+ 401: {
2421
2579
  headers: {
2422
2580
  [name: string]: unknown;
2423
2581
  };
@@ -2425,8 +2583,17 @@ interface paths {
2425
2583
  'application/json': components['schemas']['ErrorResponse'];
2426
2584
  };
2427
2585
  };
2428
- /** @description Payload too large */
2429
- 413: {
2586
+ /** @description Forbidden */
2587
+ 403: {
2588
+ headers: {
2589
+ [name: string]: unknown;
2590
+ };
2591
+ content: {
2592
+ 'application/json': components['schemas']['ErrorResponse'];
2593
+ };
2594
+ };
2595
+ /** @description Not found */
2596
+ 404: {
2430
2597
  headers: {
2431
2598
  [name: string]: unknown;
2432
2599
  };
@@ -2436,42 +2603,57 @@ interface paths {
2436
2603
  };
2437
2604
  };
2438
2605
  };
2439
- delete?: never;
2440
2606
  options?: never;
2441
2607
  head?: never;
2442
2608
  patch?: never;
2443
2609
  trace?: never;
2444
2610
  };
2445
- '/api/projects/{projectId}/flows/{flowId}/deploy': {
2611
+ '/api/projects/{projectId}/flows/{flowId}/deploy/{deploymentId}/advance': {
2446
2612
  parameters: {
2447
2613
  query?: never;
2448
2614
  header?: never;
2449
2615
  path?: never;
2450
2616
  cookie?: never;
2451
2617
  };
2618
+ get?: never;
2619
+ put?: never;
2452
2620
  /**
2453
- * Get latest deployment
2454
- * @description Get the latest deployment for a flow.
2621
+ * Advance deployment
2622
+ * @description Advance the deployment state machine. Checks bundle/container status and transitions accordingly.
2455
2623
  */
2456
- get: {
2624
+ post: {
2457
2625
  parameters: {
2458
2626
  query?: never;
2459
2627
  header?: never;
2460
2628
  path: {
2461
2629
  projectId: string;
2462
2630
  flowId: string;
2631
+ deploymentId: string;
2463
2632
  };
2464
2633
  cookie?: never;
2465
2634
  };
2466
2635
  requestBody?: never;
2467
2636
  responses: {
2468
- /** @description Latest deployment (or null) */
2637
+ /** @description Current deployment state after advancement */
2469
2638
  200: {
2470
2639
  headers: {
2471
2640
  [name: string]: unknown;
2472
2641
  };
2473
2642
  content: {
2474
- 'application/json': components['schemas']['Deployment'] | null;
2643
+ 'application/json': {
2644
+ id: string;
2645
+ flowId: string;
2646
+ /** @enum {string} */
2647
+ type: 'web' | 'server';
2648
+ status: string;
2649
+ containerUrl: string | null;
2650
+ publicUrl?: string | null;
2651
+ errorMessage: string | null;
2652
+ /** Format: date-time */
2653
+ createdAt: string;
2654
+ /** Format: date-time */
2655
+ updatedAt: string;
2656
+ };
2475
2657
  };
2476
2658
  };
2477
2659
  /** @description Unauthorized */
@@ -2483,14 +2665,35 @@ interface paths {
2483
2665
  'application/json': components['schemas']['ErrorResponse'];
2484
2666
  };
2485
2667
  };
2668
+ /** @description Not found */
2669
+ 404: {
2670
+ headers: {
2671
+ [name: string]: unknown;
2672
+ };
2673
+ content: {
2674
+ 'application/json': components['schemas']['ErrorResponse'];
2675
+ };
2676
+ };
2486
2677
  };
2487
2678
  };
2488
- put?: never;
2679
+ delete?: never;
2680
+ options?: never;
2681
+ head?: never;
2682
+ patch?: never;
2683
+ trace?: never;
2684
+ };
2685
+ '/api/projects/{projectId}/flows/{flowId}/settings': {
2686
+ parameters: {
2687
+ query?: never;
2688
+ header?: never;
2689
+ path?: never;
2690
+ cookie?: never;
2691
+ };
2489
2692
  /**
2490
- * Deploy flow
2491
- * @description Start a deployment for a flow. Auto-detects web or server from flow content.
2693
+ * List settings
2694
+ * @description List active named settings for a flow.
2492
2695
  */
2493
- post: {
2696
+ get: {
2494
2697
  parameters: {
2495
2698
  query?: never;
2496
2699
  header?: never;
@@ -2502,22 +2705,13 @@ interface paths {
2502
2705
  };
2503
2706
  requestBody?: never;
2504
2707
  responses: {
2505
- /** @description Deployment started */
2506
- 201: {
2507
- headers: {
2508
- [name: string]: unknown;
2509
- };
2510
- content: {
2511
- 'application/json': components['schemas']['DeployResponse'];
2512
- };
2513
- };
2514
- /** @description Invalid flow */
2515
- 400: {
2708
+ /** @description List of settings */
2709
+ 200: {
2516
2710
  headers: {
2517
2711
  [name: string]: unknown;
2518
2712
  };
2519
2713
  content: {
2520
- 'application/json': components['schemas']['ErrorResponse'];
2714
+ 'application/json': components['schemas']['ListSettingsResponse'];
2521
2715
  };
2522
2716
  };
2523
2717
  /** @description Unauthorized */
@@ -2540,45 +2734,45 @@ interface paths {
2540
2734
  };
2541
2735
  };
2542
2736
  };
2737
+ put?: never;
2738
+ post?: never;
2543
2739
  delete?: never;
2544
2740
  options?: never;
2545
2741
  head?: never;
2546
2742
  patch?: never;
2547
2743
  trace?: never;
2548
2744
  };
2549
- '/api/projects/{projectId}/flows/{flowId}/deploy/{deploymentId}/advance': {
2745
+ '/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}': {
2550
2746
  parameters: {
2551
2747
  query?: never;
2552
2748
  header?: never;
2553
2749
  path?: never;
2554
2750
  cookie?: never;
2555
2751
  };
2556
- get?: never;
2557
- put?: never;
2558
2752
  /**
2559
- * Advance deployment
2560
- * @description Advance the deployment state machine. Poll until terminal status.
2753
+ * Get settings
2754
+ * @description Get a single settings entry with its latest deployment.
2561
2755
  */
2562
- post: {
2756
+ get: {
2563
2757
  parameters: {
2564
2758
  query?: never;
2565
2759
  header?: never;
2566
2760
  path: {
2567
2761
  projectId: string;
2568
2762
  flowId: string;
2569
- deploymentId: string;
2763
+ settingsId: string;
2570
2764
  };
2571
2765
  cookie?: never;
2572
2766
  };
2573
2767
  requestBody?: never;
2574
2768
  responses: {
2575
- /** @description Current deployment state */
2769
+ /** @description Settings details with deployment */
2576
2770
  200: {
2577
2771
  headers: {
2578
2772
  [name: string]: unknown;
2579
2773
  };
2580
2774
  content: {
2581
- 'application/json': components['schemas']['Deployment'];
2775
+ 'application/json': components['schemas']['FlowSettingsDetail'];
2582
2776
  };
2583
2777
  };
2584
2778
  /** @description Unauthorized */
@@ -2601,43 +2795,45 @@ interface paths {
2601
2795
  };
2602
2796
  };
2603
2797
  };
2798
+ put?: never;
2799
+ post?: never;
2604
2800
  delete?: never;
2605
2801
  options?: never;
2606
2802
  head?: never;
2607
2803
  patch?: never;
2608
2804
  trace?: never;
2609
2805
  };
2610
- '/api/projects/{projectId}/observe/ticket': {
2806
+ '/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}/json': {
2611
2807
  parameters: {
2612
2808
  query?: never;
2613
2809
  header?: never;
2614
2810
  path?: never;
2615
2811
  cookie?: never;
2616
2812
  };
2617
- get?: never;
2618
- put?: never;
2619
2813
  /**
2620
- * Create SSE ticket
2621
- * @description Generate a one-time ticket for authenticating an SSE connection to the Observer service. Requires project membership.
2814
+ * Download settings JSON
2815
+ * @description Download the named flow settings as a self-contained Setup JSON file. Includes parent variables and definitions.
2622
2816
  */
2623
- post: {
2817
+ get: {
2624
2818
  parameters: {
2625
2819
  query?: never;
2626
2820
  header?: never;
2627
2821
  path: {
2628
2822
  projectId: string;
2823
+ flowId: string;
2824
+ settingsId: string;
2629
2825
  };
2630
2826
  cookie?: never;
2631
2827
  };
2632
2828
  requestBody?: never;
2633
2829
  responses: {
2634
- /** @description Ticket generated */
2830
+ /** @description Flow Setup JSON file */
2635
2831
  200: {
2636
2832
  headers: {
2637
2833
  [name: string]: unknown;
2638
2834
  };
2639
2835
  content: {
2640
- 'application/json': components['schemas']['CreateTicketResponse'];
2836
+ 'application/json': components['schemas']['FlowContent'];
2641
2837
  };
2642
2838
  };
2643
2839
  /** @description Unauthorized */
@@ -2660,51 +2856,47 @@ interface paths {
2660
2856
  };
2661
2857
  };
2662
2858
  };
2859
+ put?: never;
2860
+ post?: never;
2663
2861
  delete?: never;
2664
2862
  options?: never;
2665
2863
  head?: never;
2666
2864
  patch?: never;
2667
2865
  trace?: never;
2668
2866
  };
2669
- '/api/projects/{projectId}/observe/validate-ticket': {
2867
+ '/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}/bundle': {
2670
2868
  parameters: {
2671
2869
  query?: never;
2672
2870
  header?: never;
2673
2871
  path?: never;
2674
2872
  cookie?: never;
2675
2873
  };
2676
- get?: never;
2677
- put?: never;
2678
2874
  /**
2679
- * Validate ticket
2680
- * @description Internal endpoint for the Observer service to validate and consume a ticket.
2875
+ * Download settings bundle
2876
+ * @description Download the compiled JS/MJS for the settings' latest deployment. Redirects to a presigned download URL.
2681
2877
  */
2682
- post: {
2878
+ get: {
2683
2879
  parameters: {
2684
2880
  query?: never;
2685
2881
  header?: never;
2686
2882
  path: {
2687
2883
  projectId: string;
2884
+ flowId: string;
2885
+ settingsId: string;
2688
2886
  };
2689
2887
  cookie?: never;
2690
2888
  };
2691
- requestBody?: {
2692
- content: {
2693
- 'application/json': components['schemas']['ValidateTicketRequest'];
2694
- };
2695
- };
2889
+ requestBody?: never;
2696
2890
  responses: {
2697
- /** @description Ticket payload */
2698
- 200: {
2891
+ /** @description Redirect to presigned bundle URL */
2892
+ 302: {
2699
2893
  headers: {
2700
2894
  [name: string]: unknown;
2701
2895
  };
2702
- content: {
2703
- 'application/json': components['schemas']['ValidateTicketResponse'];
2704
- };
2896
+ content?: never;
2705
2897
  };
2706
- /** @description Validation error */
2707
- 400: {
2898
+ /** @description Unauthorized */
2899
+ 401: {
2708
2900
  headers: {
2709
2901
  [name: string]: unknown;
2710
2902
  };
@@ -2712,8 +2904,8 @@ interface paths {
2712
2904
  'application/json': components['schemas']['ErrorResponse'];
2713
2905
  };
2714
2906
  };
2715
- /** @description Invalid or expired ticket */
2716
- 401: {
2907
+ /** @description Not found */
2908
+ 404: {
2717
2909
  headers: {
2718
2910
  [name: string]: unknown;
2719
2911
  };
@@ -2721,8 +2913,8 @@ interface paths {
2721
2913
  'application/json': components['schemas']['ErrorResponse'];
2722
2914
  };
2723
2915
  };
2724
- /** @description Forbidden */
2725
- 403: {
2916
+ /** @description Service unavailable */
2917
+ 503: {
2726
2918
  headers: {
2727
2919
  [name: string]: unknown;
2728
2920
  };
@@ -2732,13 +2924,15 @@ interface paths {
2732
2924
  };
2733
2925
  };
2734
2926
  };
2927
+ put?: never;
2928
+ post?: never;
2735
2929
  delete?: never;
2736
2930
  options?: never;
2737
2931
  head?: never;
2738
2932
  patch?: never;
2739
2933
  trace?: never;
2740
2934
  };
2741
- '/api/health': {
2935
+ '/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}/deploy': {
2742
2936
  parameters: {
2743
2937
  query?: never;
2744
2938
  header?: never;
@@ -2746,90 +2940,55 @@ interface paths {
2746
2940
  cookie?: never;
2747
2941
  };
2748
2942
  /**
2749
- * Health check
2750
- * @description Check the health of the API and its dependencies.
2943
+ * Get latest settings deployment
2944
+ * @description Get the latest deployment for a specific settings entry.
2751
2945
  */
2752
2946
  get: {
2753
2947
  parameters: {
2754
2948
  query?: never;
2755
2949
  header?: never;
2756
- path?: never;
2950
+ path: {
2951
+ projectId: string;
2952
+ flowId: string;
2953
+ settingsId: string;
2954
+ };
2757
2955
  cookie?: never;
2758
2956
  };
2759
2957
  requestBody?: never;
2760
2958
  responses: {
2761
- /** @description Health status */
2959
+ /** @description Latest deployment (or null) */
2762
2960
  200: {
2763
2961
  headers: {
2764
2962
  [name: string]: unknown;
2765
2963
  };
2766
2964
  content: {
2767
- 'application/json': components['schemas']['HealthResponse'];
2965
+ 'application/json': components['schemas']['SettingsDeploymentResponse'];
2768
2966
  };
2769
2967
  };
2770
- };
2771
- };
2772
- put?: never;
2773
- post?: never;
2774
- delete?: never;
2775
- options?: never;
2776
- head?: never;
2777
- patch?: never;
2778
- trace?: never;
2779
- };
2780
- '/api/openapi.json': {
2781
- parameters: {
2782
- query?: never;
2783
- header?: never;
2784
- path?: never;
2785
- cookie?: never;
2786
- };
2787
- /**
2788
- * OpenAPI spec
2789
- * @description Return the OpenAPI 3.1 specification for this API.
2790
- */
2791
- get: {
2792
- parameters: {
2793
- query?: never;
2794
- header?: never;
2795
- path?: never;
2796
- cookie?: never;
2797
- };
2798
- requestBody?: never;
2799
- responses: {
2800
- /** @description OpenAPI document */
2801
- 200: {
2968
+ /** @description Unauthorized */
2969
+ 401: {
2802
2970
  headers: {
2803
2971
  [name: string]: unknown;
2804
2972
  };
2805
2973
  content: {
2806
- 'application/json': {
2807
- [key: string]: unknown;
2808
- };
2974
+ 'application/json': components['schemas']['ErrorResponse'];
2975
+ };
2976
+ };
2977
+ /** @description Not found */
2978
+ 404: {
2979
+ headers: {
2980
+ [name: string]: unknown;
2981
+ };
2982
+ content: {
2983
+ 'application/json': components['schemas']['ErrorResponse'];
2809
2984
  };
2810
2985
  };
2811
2986
  };
2812
2987
  };
2813
2988
  put?: never;
2814
- post?: never;
2815
- delete?: never;
2816
- options?: never;
2817
- head?: never;
2818
- patch?: never;
2819
- trace?: never;
2820
- };
2821
- '/ingest/v1/{projectId}': {
2822
- parameters: {
2823
- query?: never;
2824
- header?: never;
2825
- path?: never;
2826
- cookie?: never;
2827
- };
2828
- get?: never;
2829
- put?: never;
2830
2989
  /**
2831
- * Event ingestion
2832
- * @description Ingest walkerOS events for a project. Served by the Observer service (port 3001).
2990
+ * Deploy settings
2991
+ * @description Start a deployment for a specific settings entry. Detects platform from the settings.
2833
2992
  */
2834
2993
  post: {
2835
2994
  parameters: {
@@ -2837,25 +2996,1187 @@ interface paths {
2837
2996
  header?: never;
2838
2997
  path: {
2839
2998
  projectId: string;
2999
+ flowId: string;
3000
+ settingsId: string;
2840
3001
  };
2841
3002
  cookie?: never;
2842
3003
  };
2843
3004
  requestBody?: never;
2844
3005
  responses: {
2845
- /** @description Accepted */
2846
- 202: {
3006
+ /** @description Deployment started */
3007
+ 201: {
2847
3008
  headers: {
2848
3009
  [name: string]: unknown;
2849
3010
  };
2850
- content?: never;
3011
+ content: {
3012
+ 'application/json': components['schemas']['DeploySettingsResponse'];
3013
+ };
2851
3014
  };
2852
- };
2853
- };
2854
- delete?: never;
2855
- options?: never;
2856
- head?: never;
2857
- patch?: never;
2858
- trace?: never;
3015
+ /** @description Unauthorized */
3016
+ 401: {
3017
+ headers: {
3018
+ [name: string]: unknown;
3019
+ };
3020
+ content: {
3021
+ 'application/json': components['schemas']['ErrorResponse'];
3022
+ };
3023
+ };
3024
+ /** @description Not found */
3025
+ 404: {
3026
+ headers: {
3027
+ [name: string]: unknown;
3028
+ };
3029
+ content: {
3030
+ 'application/json': components['schemas']['ErrorResponse'];
3031
+ };
3032
+ };
3033
+ /** @description Deployment already in progress */
3034
+ 409: {
3035
+ headers: {
3036
+ [name: string]: unknown;
3037
+ };
3038
+ content: {
3039
+ 'application/json': components['schemas']['ErrorResponse'];
3040
+ };
3041
+ };
3042
+ /** @description Settings orphaned */
3043
+ 422: {
3044
+ headers: {
3045
+ [name: string]: unknown;
3046
+ };
3047
+ content: {
3048
+ 'application/json': components['schemas']['ErrorResponse'];
3049
+ };
3050
+ };
3051
+ /** @description Service unavailable */
3052
+ 503: {
3053
+ headers: {
3054
+ [name: string]: unknown;
3055
+ };
3056
+ content: {
3057
+ 'application/json': components['schemas']['ErrorResponse'];
3058
+ };
3059
+ };
3060
+ };
3061
+ };
3062
+ delete?: never;
3063
+ options?: never;
3064
+ head?: never;
3065
+ patch?: never;
3066
+ trace?: never;
3067
+ };
3068
+ '/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}/deployments/{deploymentId}': {
3069
+ parameters: {
3070
+ query?: never;
3071
+ header?: never;
3072
+ path?: never;
3073
+ cookie?: never;
3074
+ };
3075
+ /**
3076
+ * Get settings deployment detail
3077
+ * @description Get a specific deployment by ID, scoped to a settings entry.
3078
+ */
3079
+ get: {
3080
+ parameters: {
3081
+ query?: never;
3082
+ header?: never;
3083
+ path: {
3084
+ projectId: string;
3085
+ flowId: string;
3086
+ settingsId: string;
3087
+ deploymentId: string;
3088
+ };
3089
+ cookie?: never;
3090
+ };
3091
+ requestBody?: never;
3092
+ responses: {
3093
+ /** @description Deployment details */
3094
+ 200: {
3095
+ headers: {
3096
+ [name: string]: unknown;
3097
+ };
3098
+ content: {
3099
+ 'application/json': components['schemas']['SettingsDeploymentDetailResponse'];
3100
+ };
3101
+ };
3102
+ /** @description Unauthorized */
3103
+ 401: {
3104
+ headers: {
3105
+ [name: string]: unknown;
3106
+ };
3107
+ content: {
3108
+ 'application/json': components['schemas']['ErrorResponse'];
3109
+ };
3110
+ };
3111
+ /** @description Not found */
3112
+ 404: {
3113
+ headers: {
3114
+ [name: string]: unknown;
3115
+ };
3116
+ content: {
3117
+ 'application/json': components['schemas']['ErrorResponse'];
3118
+ };
3119
+ };
3120
+ };
3121
+ };
3122
+ put?: never;
3123
+ post?: never;
3124
+ delete?: never;
3125
+ options?: never;
3126
+ head?: never;
3127
+ patch?: never;
3128
+ trace?: never;
3129
+ };
3130
+ '/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}/deployments/{deploymentId}/advance': {
3131
+ parameters: {
3132
+ query?: never;
3133
+ header?: never;
3134
+ path?: never;
3135
+ cookie?: never;
3136
+ };
3137
+ get?: never;
3138
+ put?: never;
3139
+ /**
3140
+ * Advance settings deployment
3141
+ * @description Advance the deployment state machine for a per-settings deployment.
3142
+ */
3143
+ post: {
3144
+ parameters: {
3145
+ query?: never;
3146
+ header?: never;
3147
+ path: {
3148
+ projectId: string;
3149
+ flowId: string;
3150
+ settingsId: string;
3151
+ deploymentId: string;
3152
+ };
3153
+ cookie?: never;
3154
+ };
3155
+ requestBody?: never;
3156
+ responses: {
3157
+ /** @description Current deployment state after advancement */
3158
+ 200: {
3159
+ headers: {
3160
+ [name: string]: unknown;
3161
+ };
3162
+ content: {
3163
+ 'application/json': components['schemas']['AdvanceSettingsDeploymentResponse'];
3164
+ };
3165
+ };
3166
+ /** @description Unauthorized */
3167
+ 401: {
3168
+ headers: {
3169
+ [name: string]: unknown;
3170
+ };
3171
+ content: {
3172
+ 'application/json': components['schemas']['ErrorResponse'];
3173
+ };
3174
+ };
3175
+ /** @description Not found */
3176
+ 404: {
3177
+ headers: {
3178
+ [name: string]: unknown;
3179
+ };
3180
+ content: {
3181
+ 'application/json': components['schemas']['ErrorResponse'];
3182
+ };
3183
+ };
3184
+ };
3185
+ };
3186
+ delete?: never;
3187
+ options?: never;
3188
+ head?: never;
3189
+ patch?: never;
3190
+ trace?: never;
3191
+ };
3192
+ '/api/projects/{projectId}/flows/{flowId}/versions': {
3193
+ parameters: {
3194
+ query?: never;
3195
+ header?: never;
3196
+ path?: never;
3197
+ cookie?: never;
3198
+ };
3199
+ /**
3200
+ * List versions
3201
+ * @description List all versions for a flow.
3202
+ */
3203
+ get: {
3204
+ parameters: {
3205
+ query?: never;
3206
+ header?: never;
3207
+ path: {
3208
+ projectId: string;
3209
+ flowId: string;
3210
+ };
3211
+ cookie?: never;
3212
+ };
3213
+ requestBody?: never;
3214
+ responses: {
3215
+ /** @description List of versions */
3216
+ 200: {
3217
+ headers: {
3218
+ [name: string]: unknown;
3219
+ };
3220
+ content: {
3221
+ 'application/json': components['schemas']['ListVersionsResponse'];
3222
+ };
3223
+ };
3224
+ /** @description Unauthorized */
3225
+ 401: {
3226
+ headers: {
3227
+ [name: string]: unknown;
3228
+ };
3229
+ content: {
3230
+ 'application/json': components['schemas']['ErrorResponse'];
3231
+ };
3232
+ };
3233
+ /** @description Not found */
3234
+ 404: {
3235
+ headers: {
3236
+ [name: string]: unknown;
3237
+ };
3238
+ content: {
3239
+ 'application/json': components['schemas']['ErrorResponse'];
3240
+ };
3241
+ };
3242
+ };
3243
+ };
3244
+ put?: never;
3245
+ post?: never;
3246
+ delete?: never;
3247
+ options?: never;
3248
+ head?: never;
3249
+ patch?: never;
3250
+ trace?: never;
3251
+ };
3252
+ '/api/projects/{projectId}/flows/{flowId}/versions/{versionNumber}': {
3253
+ parameters: {
3254
+ query?: never;
3255
+ header?: never;
3256
+ path?: never;
3257
+ cookie?: never;
3258
+ };
3259
+ /**
3260
+ * Get version
3261
+ * @description Get a specific version of a flow.
3262
+ */
3263
+ get: {
3264
+ parameters: {
3265
+ query?: never;
3266
+ header?: never;
3267
+ path: {
3268
+ projectId: string;
3269
+ flowId: string;
3270
+ versionNumber: number;
3271
+ };
3272
+ cookie?: never;
3273
+ };
3274
+ requestBody?: never;
3275
+ responses: {
3276
+ /** @description Version details with content */
3277
+ 200: {
3278
+ headers: {
3279
+ [name: string]: unknown;
3280
+ };
3281
+ content: {
3282
+ 'application/json': components['schemas']['GetVersionResponse'];
3283
+ };
3284
+ };
3285
+ /** @description Unauthorized */
3286
+ 401: {
3287
+ headers: {
3288
+ [name: string]: unknown;
3289
+ };
3290
+ content: {
3291
+ 'application/json': components['schemas']['ErrorResponse'];
3292
+ };
3293
+ };
3294
+ /** @description Not found */
3295
+ 404: {
3296
+ headers: {
3297
+ [name: string]: unknown;
3298
+ };
3299
+ content: {
3300
+ 'application/json': components['schemas']['ErrorResponse'];
3301
+ };
3302
+ };
3303
+ };
3304
+ };
3305
+ put?: never;
3306
+ post?: never;
3307
+ delete?: never;
3308
+ options?: never;
3309
+ head?: never;
3310
+ patch?: never;
3311
+ trace?: never;
3312
+ };
3313
+ '/api/projects/{projectId}/flows/{flowId}/versions/{versionNumber}/restore': {
3314
+ parameters: {
3315
+ query?: never;
3316
+ header?: never;
3317
+ path?: never;
3318
+ cookie?: never;
3319
+ };
3320
+ get?: never;
3321
+ put?: never;
3322
+ /**
3323
+ * Restore version
3324
+ * @description Restore a flow to a specific version. Creates a new version snapshot. Requires owner role.
3325
+ */
3326
+ post: {
3327
+ parameters: {
3328
+ query?: never;
3329
+ header?: never;
3330
+ path: {
3331
+ projectId: string;
3332
+ flowId: string;
3333
+ versionNumber: number;
3334
+ };
3335
+ cookie?: never;
3336
+ };
3337
+ requestBody?: never;
3338
+ responses: {
3339
+ /** @description Flow restored */
3340
+ 200: {
3341
+ headers: {
3342
+ [name: string]: unknown;
3343
+ };
3344
+ content: {
3345
+ 'application/json': components['schemas']['Flow'];
3346
+ };
3347
+ };
3348
+ /** @description Unauthorized */
3349
+ 401: {
3350
+ headers: {
3351
+ [name: string]: unknown;
3352
+ };
3353
+ content: {
3354
+ 'application/json': components['schemas']['ErrorResponse'];
3355
+ };
3356
+ };
3357
+ /** @description Forbidden */
3358
+ 403: {
3359
+ headers: {
3360
+ [name: string]: unknown;
3361
+ };
3362
+ content: {
3363
+ 'application/json': components['schemas']['ErrorResponse'];
3364
+ };
3365
+ };
3366
+ /** @description Not found */
3367
+ 404: {
3368
+ headers: {
3369
+ [name: string]: unknown;
3370
+ };
3371
+ content: {
3372
+ 'application/json': components['schemas']['ErrorResponse'];
3373
+ };
3374
+ };
3375
+ };
3376
+ };
3377
+ delete?: never;
3378
+ options?: never;
3379
+ head?: never;
3380
+ patch?: never;
3381
+ trace?: never;
3382
+ };
3383
+ '/api/tokens': {
3384
+ parameters: {
3385
+ query?: never;
3386
+ header?: never;
3387
+ path?: never;
3388
+ cookie?: never;
3389
+ };
3390
+ /**
3391
+ * List my tokens
3392
+ * @description List all API tokens for the authenticated user. Returns summaries (no raw token values).
3393
+ */
3394
+ get: {
3395
+ parameters: {
3396
+ query?: never;
3397
+ header?: never;
3398
+ path?: never;
3399
+ cookie?: never;
3400
+ };
3401
+ requestBody?: never;
3402
+ responses: {
3403
+ /** @description List of tokens */
3404
+ 200: {
3405
+ headers: {
3406
+ [name: string]: unknown;
3407
+ };
3408
+ content: {
3409
+ 'application/json': components['schemas']['ListApiTokensResponse'];
3410
+ };
3411
+ };
3412
+ /** @description Unauthorized */
3413
+ 401: {
3414
+ headers: {
3415
+ [name: string]: unknown;
3416
+ };
3417
+ content: {
3418
+ 'application/json': components['schemas']['ErrorResponse'];
3419
+ };
3420
+ };
3421
+ };
3422
+ };
3423
+ put?: never;
3424
+ /**
3425
+ * Create token
3426
+ * @description Create a new API token. The raw token is returned once and cannot be retrieved again.
3427
+ */
3428
+ post: {
3429
+ parameters: {
3430
+ query?: never;
3431
+ header?: never;
3432
+ path?: never;
3433
+ cookie?: never;
3434
+ };
3435
+ requestBody?: {
3436
+ content: {
3437
+ 'application/json': components['schemas']['CreateApiTokenRequest'];
3438
+ };
3439
+ };
3440
+ responses: {
3441
+ /** @description Token created (raw token shown once) */
3442
+ 201: {
3443
+ headers: {
3444
+ [name: string]: unknown;
3445
+ };
3446
+ content: {
3447
+ 'application/json': components['schemas']['CreateApiTokenResponse'];
3448
+ };
3449
+ };
3450
+ /** @description Validation error */
3451
+ 400: {
3452
+ headers: {
3453
+ [name: string]: unknown;
3454
+ };
3455
+ content: {
3456
+ 'application/json': components['schemas']['ErrorResponse'];
3457
+ };
3458
+ };
3459
+ /** @description Unauthorized */
3460
+ 401: {
3461
+ headers: {
3462
+ [name: string]: unknown;
3463
+ };
3464
+ content: {
3465
+ 'application/json': components['schemas']['ErrorResponse'];
3466
+ };
3467
+ };
3468
+ /** @description Conflict */
3469
+ 409: {
3470
+ headers: {
3471
+ [name: string]: unknown;
3472
+ };
3473
+ content: {
3474
+ 'application/json': components['schemas']['ErrorResponse'];
3475
+ };
3476
+ };
3477
+ };
3478
+ };
3479
+ delete?: never;
3480
+ options?: never;
3481
+ head?: never;
3482
+ patch?: never;
3483
+ trace?: never;
3484
+ };
3485
+ '/api/tokens/{tokenId}': {
3486
+ parameters: {
3487
+ query?: never;
3488
+ header?: never;
3489
+ path?: never;
3490
+ cookie?: never;
3491
+ };
3492
+ get?: never;
3493
+ put?: never;
3494
+ post?: never;
3495
+ /**
3496
+ * Revoke token
3497
+ * @description Revoke an API token (soft delete via revokedAt timestamp).
3498
+ */
3499
+ delete: {
3500
+ parameters: {
3501
+ query?: never;
3502
+ header?: never;
3503
+ path: {
3504
+ tokenId: string;
3505
+ };
3506
+ cookie?: never;
3507
+ };
3508
+ requestBody?: never;
3509
+ responses: {
3510
+ /** @description Token revoked */
3511
+ 204: {
3512
+ headers: {
3513
+ [name: string]: unknown;
3514
+ };
3515
+ content?: never;
3516
+ };
3517
+ /** @description Unauthorized */
3518
+ 401: {
3519
+ headers: {
3520
+ [name: string]: unknown;
3521
+ };
3522
+ content: {
3523
+ 'application/json': components['schemas']['ErrorResponse'];
3524
+ };
3525
+ };
3526
+ };
3527
+ };
3528
+ options?: never;
3529
+ head?: never;
3530
+ patch?: never;
3531
+ trace?: never;
3532
+ };
3533
+ '/api/bundle': {
3534
+ parameters: {
3535
+ query?: never;
3536
+ header?: never;
3537
+ path?: never;
3538
+ cookie?: never;
3539
+ };
3540
+ get?: never;
3541
+ put?: never;
3542
+ /**
3543
+ * Bundle flow
3544
+ * @description Bundle a walkerOS flow into a deployable JavaScript module.
3545
+ */
3546
+ post: {
3547
+ parameters: {
3548
+ query?: never;
3549
+ header?: never;
3550
+ path?: never;
3551
+ cookie?: never;
3552
+ };
3553
+ /** @description Flow content to bundle */
3554
+ requestBody?: {
3555
+ content: {
3556
+ 'application/json': {
3557
+ [key: string]: unknown;
3558
+ };
3559
+ };
3560
+ };
3561
+ responses: {
3562
+ /** @description Bundled JavaScript module */
3563
+ 200: {
3564
+ headers: {
3565
+ [name: string]: unknown;
3566
+ };
3567
+ content: {
3568
+ 'application/javascript': string;
3569
+ };
3570
+ };
3571
+ /** @description Validation error */
3572
+ 400: {
3573
+ headers: {
3574
+ [name: string]: unknown;
3575
+ };
3576
+ content: {
3577
+ 'application/json': components['schemas']['ErrorResponse'];
3578
+ };
3579
+ };
3580
+ /** @description Payload too large */
3581
+ 413: {
3582
+ headers: {
3583
+ [name: string]: unknown;
3584
+ };
3585
+ content: {
3586
+ 'application/json': components['schemas']['ErrorResponse'];
3587
+ };
3588
+ };
3589
+ };
3590
+ };
3591
+ delete?: never;
3592
+ options?: never;
3593
+ head?: never;
3594
+ patch?: never;
3595
+ trace?: never;
3596
+ };
3597
+ '/api/projects/{projectId}/flows/{flowId}/bundle': {
3598
+ parameters: {
3599
+ query?: never;
3600
+ header?: never;
3601
+ path?: never;
3602
+ cookie?: never;
3603
+ };
3604
+ get?: never;
3605
+ put?: never;
3606
+ /**
3607
+ * Trigger flow bundle
3608
+ * @description Start a bundle job for a project flow. For multi-settings flows, specify the named flow via ?flow= query parameter.
3609
+ */
3610
+ post: {
3611
+ parameters: {
3612
+ query?: {
3613
+ /** @description Named flow to bundle (required for multi-settings flows) */
3614
+ flow?: string;
3615
+ };
3616
+ header?: never;
3617
+ path: {
3618
+ projectId: string;
3619
+ flowId: string;
3620
+ };
3621
+ cookie?: never;
3622
+ };
3623
+ requestBody?: never;
3624
+ responses: {
3625
+ /** @description Bundle job started */
3626
+ 200: {
3627
+ headers: {
3628
+ [name: string]: unknown;
3629
+ };
3630
+ content: {
3631
+ 'application/json': components['schemas']['BundleJobResponse'];
3632
+ };
3633
+ };
3634
+ /** @description Unauthorized */
3635
+ 401: {
3636
+ headers: {
3637
+ [name: string]: unknown;
3638
+ };
3639
+ content: {
3640
+ 'application/json': components['schemas']['ErrorResponse'];
3641
+ };
3642
+ };
3643
+ /** @description Not found */
3644
+ 404: {
3645
+ headers: {
3646
+ [name: string]: unknown;
3647
+ };
3648
+ content: {
3649
+ 'application/json': components['schemas']['ErrorResponse'];
3650
+ };
3651
+ };
3652
+ /** @description Flow selection required for multi-settings flows */
3653
+ 422: {
3654
+ headers: {
3655
+ [name: string]: unknown;
3656
+ };
3657
+ content: {
3658
+ 'application/json': components['schemas']['ErrorResponse'];
3659
+ };
3660
+ };
3661
+ /** @description Service unavailable */
3662
+ 503: {
3663
+ headers: {
3664
+ [name: string]: unknown;
3665
+ };
3666
+ content: {
3667
+ 'application/json': components['schemas']['ErrorResponse'];
3668
+ };
3669
+ };
3670
+ };
3671
+ };
3672
+ delete?: never;
3673
+ options?: never;
3674
+ head?: never;
3675
+ patch?: never;
3676
+ trace?: never;
3677
+ };
3678
+ '/api/projects/{projectId}/flows/{flowId}/bundle/stream': {
3679
+ parameters: {
3680
+ query?: never;
3681
+ header?: never;
3682
+ path?: never;
3683
+ cookie?: never;
3684
+ };
3685
+ /**
3686
+ * Stream bundle job status (SSE)
3687
+ * @description Stream bundle job progress via Server-Sent Events.
3688
+ */
3689
+ get: {
3690
+ parameters: {
3691
+ query: {
3692
+ jobId: string;
3693
+ };
3694
+ header?: never;
3695
+ path: {
3696
+ projectId: string;
3697
+ flowId: string;
3698
+ };
3699
+ cookie?: never;
3700
+ };
3701
+ requestBody?: never;
3702
+ responses: {
3703
+ /** @description SSE event stream */
3704
+ 200: {
3705
+ headers: {
3706
+ [name: string]: unknown;
3707
+ };
3708
+ content?: never;
3709
+ };
3710
+ /** @description Unauthorized */
3711
+ 401: {
3712
+ headers: {
3713
+ [name: string]: unknown;
3714
+ };
3715
+ content: {
3716
+ 'application/json': components['schemas']['ErrorResponse'];
3717
+ };
3718
+ };
3719
+ };
3720
+ };
3721
+ put?: never;
3722
+ post?: never;
3723
+ delete?: never;
3724
+ options?: never;
3725
+ head?: never;
3726
+ patch?: never;
3727
+ trace?: never;
3728
+ };
3729
+ '/api/projects/{projectId}/flows/{flowId}/publish': {
3730
+ parameters: {
3731
+ query?: never;
3732
+ header?: never;
3733
+ path?: never;
3734
+ cookie?: never;
3735
+ };
3736
+ /**
3737
+ * Get publish status
3738
+ * @description Get the current publish status for a flow (CDN deployment).
3739
+ */
3740
+ get: {
3741
+ parameters: {
3742
+ query?: never;
3743
+ header?: never;
3744
+ path: {
3745
+ projectId: string;
3746
+ flowId: string;
3747
+ };
3748
+ cookie?: never;
3749
+ };
3750
+ requestBody?: never;
3751
+ responses: {
3752
+ /** @description Publish status */
3753
+ 200: {
3754
+ headers: {
3755
+ [name: string]: unknown;
3756
+ };
3757
+ content?: never;
3758
+ };
3759
+ /** @description Unauthorized */
3760
+ 401: {
3761
+ headers: {
3762
+ [name: string]: unknown;
3763
+ };
3764
+ content: {
3765
+ 'application/json': components['schemas']['ErrorResponse'];
3766
+ };
3767
+ };
3768
+ /** @description Not found */
3769
+ 404: {
3770
+ headers: {
3771
+ [name: string]: unknown;
3772
+ };
3773
+ content: {
3774
+ 'application/json': components['schemas']['ErrorResponse'];
3775
+ };
3776
+ };
3777
+ };
3778
+ };
3779
+ put?: never;
3780
+ /**
3781
+ * Publish flow to CDN
3782
+ * @description Publish a bundled flow to the CDN for client-side loading.
3783
+ */
3784
+ post: {
3785
+ parameters: {
3786
+ query?: never;
3787
+ header?: never;
3788
+ path: {
3789
+ projectId: string;
3790
+ flowId: string;
3791
+ };
3792
+ cookie?: never;
3793
+ };
3794
+ requestBody?: never;
3795
+ responses: {
3796
+ /** @description Flow published */
3797
+ 200: {
3798
+ headers: {
3799
+ [name: string]: unknown;
3800
+ };
3801
+ content?: never;
3802
+ };
3803
+ /** @description Unauthorized */
3804
+ 401: {
3805
+ headers: {
3806
+ [name: string]: unknown;
3807
+ };
3808
+ content: {
3809
+ 'application/json': components['schemas']['ErrorResponse'];
3810
+ };
3811
+ };
3812
+ /** @description Not found */
3813
+ 404: {
3814
+ headers: {
3815
+ [name: string]: unknown;
3816
+ };
3817
+ content: {
3818
+ 'application/json': components['schemas']['ErrorResponse'];
3819
+ };
3820
+ };
3821
+ };
3822
+ };
3823
+ delete?: never;
3824
+ options?: never;
3825
+ head?: never;
3826
+ patch?: never;
3827
+ trace?: never;
3828
+ };
3829
+ '/api/projects/{projectId}/deployments/latest': {
3830
+ parameters: {
3831
+ query?: never;
3832
+ header?: never;
3833
+ path?: never;
3834
+ cookie?: never;
3835
+ };
3836
+ /**
3837
+ * List latest deployments
3838
+ * @description List the latest deployment for each flow in the project.
3839
+ */
3840
+ get: {
3841
+ parameters: {
3842
+ query?: never;
3843
+ header?: never;
3844
+ path: {
3845
+ projectId: string;
3846
+ };
3847
+ cookie?: never;
3848
+ };
3849
+ requestBody?: never;
3850
+ responses: {
3851
+ /** @description Latest deployment per flow */
3852
+ 200: {
3853
+ headers: {
3854
+ [name: string]: unknown;
3855
+ };
3856
+ content: {
3857
+ 'application/json': components['schemas']['LatestDeploymentsByFlow'];
3858
+ };
3859
+ };
3860
+ /** @description Unauthorized */
3861
+ 401: {
3862
+ headers: {
3863
+ [name: string]: unknown;
3864
+ };
3865
+ content: {
3866
+ 'application/json': components['schemas']['ErrorResponse'];
3867
+ };
3868
+ };
3869
+ };
3870
+ };
3871
+ put?: never;
3872
+ post?: never;
3873
+ delete?: never;
3874
+ options?: never;
3875
+ head?: never;
3876
+ patch?: never;
3877
+ trace?: never;
3878
+ };
3879
+ '/api/projects/{projectId}/runtimes/register': {
3880
+ parameters: {
3881
+ query?: never;
3882
+ header?: never;
3883
+ path?: never;
3884
+ cookie?: never;
3885
+ };
3886
+ get?: never;
3887
+ put?: never;
3888
+ /**
3889
+ * Register runtime
3890
+ * @description Register a server-side runtime container and get a presigned bundle URL.
3891
+ */
3892
+ post: {
3893
+ parameters: {
3894
+ query?: never;
3895
+ header?: never;
3896
+ path: {
3897
+ projectId: string;
3898
+ };
3899
+ cookie?: never;
3900
+ };
3901
+ requestBody?: {
3902
+ content: {
3903
+ 'application/json': components['schemas']['RegisterRuntimeRequest'];
3904
+ };
3905
+ };
3906
+ responses: {
3907
+ /** @description Presigned bundle URL */
3908
+ 200: {
3909
+ headers: {
3910
+ [name: string]: unknown;
3911
+ };
3912
+ content?: never;
3913
+ };
3914
+ /** @description Unauthorized */
3915
+ 401: {
3916
+ headers: {
3917
+ [name: string]: unknown;
3918
+ };
3919
+ content: {
3920
+ 'application/json': components['schemas']['ErrorResponse'];
3921
+ };
3922
+ };
3923
+ };
3924
+ };
3925
+ delete?: never;
3926
+ options?: never;
3927
+ head?: never;
3928
+ patch?: never;
3929
+ trace?: never;
3930
+ };
3931
+ '/api/projects/{projectId}/observe/ticket': {
3932
+ parameters: {
3933
+ query?: never;
3934
+ header?: never;
3935
+ path?: never;
3936
+ cookie?: never;
3937
+ };
3938
+ get?: never;
3939
+ put?: never;
3940
+ /**
3941
+ * Create SSE ticket
3942
+ * @description Generate a one-time ticket for authenticating an SSE connection to the Observer service. Requires project membership.
3943
+ */
3944
+ post: {
3945
+ parameters: {
3946
+ query?: never;
3947
+ header?: never;
3948
+ path: {
3949
+ projectId: string;
3950
+ };
3951
+ cookie?: never;
3952
+ };
3953
+ requestBody?: never;
3954
+ responses: {
3955
+ /** @description Ticket generated */
3956
+ 200: {
3957
+ headers: {
3958
+ [name: string]: unknown;
3959
+ };
3960
+ content: {
3961
+ 'application/json': components['schemas']['ObserveTicketResponse'];
3962
+ };
3963
+ };
3964
+ /** @description Unauthorized */
3965
+ 401: {
3966
+ headers: {
3967
+ [name: string]: unknown;
3968
+ };
3969
+ content: {
3970
+ 'application/json': components['schemas']['ErrorResponse'];
3971
+ };
3972
+ };
3973
+ /** @description Not found */
3974
+ 404: {
3975
+ headers: {
3976
+ [name: string]: unknown;
3977
+ };
3978
+ content: {
3979
+ 'application/json': components['schemas']['ErrorResponse'];
3980
+ };
3981
+ };
3982
+ };
3983
+ };
3984
+ delete?: never;
3985
+ options?: never;
3986
+ head?: never;
3987
+ patch?: never;
3988
+ trace?: never;
3989
+ };
3990
+ '/api/projects/{projectId}/observe/validate-ticket': {
3991
+ parameters: {
3992
+ query?: never;
3993
+ header?: never;
3994
+ path?: never;
3995
+ cookie?: never;
3996
+ };
3997
+ get?: never;
3998
+ put?: never;
3999
+ /**
4000
+ * Validate ticket
4001
+ * @description Internal endpoint for the Observer service to validate and consume a ticket.
4002
+ */
4003
+ post: {
4004
+ parameters: {
4005
+ query?: never;
4006
+ header?: never;
4007
+ path: {
4008
+ projectId: string;
4009
+ };
4010
+ cookie?: never;
4011
+ };
4012
+ requestBody?: {
4013
+ content: {
4014
+ 'application/json': components['schemas']['ValidateTicketRequest'];
4015
+ };
4016
+ };
4017
+ responses: {
4018
+ /** @description Ticket payload */
4019
+ 200: {
4020
+ headers: {
4021
+ [name: string]: unknown;
4022
+ };
4023
+ content: {
4024
+ 'application/json': components['schemas']['ValidateTicketResponse'];
4025
+ };
4026
+ };
4027
+ /** @description Validation error */
4028
+ 400: {
4029
+ headers: {
4030
+ [name: string]: unknown;
4031
+ };
4032
+ content: {
4033
+ 'application/json': components['schemas']['ErrorResponse'];
4034
+ };
4035
+ };
4036
+ /** @description Invalid or expired ticket */
4037
+ 401: {
4038
+ headers: {
4039
+ [name: string]: unknown;
4040
+ };
4041
+ content: {
4042
+ 'application/json': components['schemas']['ErrorResponse'];
4043
+ };
4044
+ };
4045
+ /** @description Forbidden */
4046
+ 403: {
4047
+ headers: {
4048
+ [name: string]: unknown;
4049
+ };
4050
+ content: {
4051
+ 'application/json': components['schemas']['ErrorResponse'];
4052
+ };
4053
+ };
4054
+ };
4055
+ };
4056
+ delete?: never;
4057
+ options?: never;
4058
+ head?: never;
4059
+ patch?: never;
4060
+ trace?: never;
4061
+ };
4062
+ '/api/health': {
4063
+ parameters: {
4064
+ query?: never;
4065
+ header?: never;
4066
+ path?: never;
4067
+ cookie?: never;
4068
+ };
4069
+ /**
4070
+ * Health check
4071
+ * @description Check the health of the API and its dependencies.
4072
+ */
4073
+ get: {
4074
+ parameters: {
4075
+ query?: never;
4076
+ header?: never;
4077
+ path?: never;
4078
+ cookie?: never;
4079
+ };
4080
+ requestBody?: never;
4081
+ responses: {
4082
+ /** @description Health status */
4083
+ 200: {
4084
+ headers: {
4085
+ [name: string]: unknown;
4086
+ };
4087
+ content: {
4088
+ 'application/json': components['schemas']['HealthResponse'];
4089
+ };
4090
+ };
4091
+ };
4092
+ };
4093
+ put?: never;
4094
+ post?: never;
4095
+ delete?: never;
4096
+ options?: never;
4097
+ head?: never;
4098
+ patch?: never;
4099
+ trace?: never;
4100
+ };
4101
+ '/api/openapi.json': {
4102
+ parameters: {
4103
+ query?: never;
4104
+ header?: never;
4105
+ path?: never;
4106
+ cookie?: never;
4107
+ };
4108
+ /**
4109
+ * OpenAPI spec
4110
+ * @description Return the OpenAPI 3.1 specification for this API.
4111
+ */
4112
+ get: {
4113
+ parameters: {
4114
+ query?: never;
4115
+ header?: never;
4116
+ path?: never;
4117
+ cookie?: never;
4118
+ };
4119
+ requestBody?: never;
4120
+ responses: {
4121
+ /** @description OpenAPI document */
4122
+ 200: {
4123
+ headers: {
4124
+ [name: string]: unknown;
4125
+ };
4126
+ content: {
4127
+ 'application/json': {
4128
+ [key: string]: unknown;
4129
+ };
4130
+ };
4131
+ };
4132
+ };
4133
+ };
4134
+ put?: never;
4135
+ post?: never;
4136
+ delete?: never;
4137
+ options?: never;
4138
+ head?: never;
4139
+ patch?: never;
4140
+ trace?: never;
4141
+ };
4142
+ '/ingest/v1/{projectId}': {
4143
+ parameters: {
4144
+ query?: never;
4145
+ header?: never;
4146
+ path?: never;
4147
+ cookie?: never;
4148
+ };
4149
+ get?: never;
4150
+ put?: never;
4151
+ /**
4152
+ * Event ingestion
4153
+ * @description Ingest walkerOS events for a project. Served by the Observer service (port 3001).
4154
+ */
4155
+ post: {
4156
+ parameters: {
4157
+ query?: never;
4158
+ header?: never;
4159
+ path: {
4160
+ projectId: string;
4161
+ };
4162
+ cookie?: never;
4163
+ };
4164
+ requestBody?: never;
4165
+ responses: {
4166
+ /** @description Accepted */
4167
+ 202: {
4168
+ headers: {
4169
+ [name: string]: unknown;
4170
+ };
4171
+ content?: never;
4172
+ };
4173
+ };
4174
+ };
4175
+ delete?: never;
4176
+ options?: never;
4177
+ head?: never;
4178
+ patch?: never;
4179
+ trace?: never;
2859
4180
  };
2860
4181
  '/stream/v1': {
2861
4182
  parameters: {
@@ -2972,7 +4293,7 @@ interface components {
2972
4293
  };
2973
4294
  FlowContent: {
2974
4295
  /** @enum {number} */
2975
- version: 1;
4296
+ version: 2;
2976
4297
  $schema?: string;
2977
4298
  include?: string[];
2978
4299
  variables?: {
@@ -2984,13 +4305,195 @@ interface components {
2984
4305
  flows?: {
2985
4306
  [key: string]: unknown;
2986
4307
  };
4308
+ contract?: {
4309
+ [key: string]: unknown;
4310
+ };
4311
+ };
4312
+ Flow: {
4313
+ /** @example flow_a1b2c3d4 */
4314
+ id: string;
4315
+ /** @example my-website-flow */
4316
+ name: string;
4317
+ config: components['schemas']['FlowContent'];
4318
+ settings?: components['schemas']['FlowSettingsSummary'][];
4319
+ /**
4320
+ * Format: date-time
4321
+ * @example 2026-01-26T14:30:00.000Z
4322
+ */
4323
+ createdAt: string;
4324
+ /**
4325
+ * Format: date-time
4326
+ * @example 2026-01-26T14:30:00.000Z
4327
+ */
4328
+ updatedAt: string;
4329
+ /** Format: date-time */
4330
+ deletedAt?: string | null;
4331
+ };
4332
+ FlowSettingsSummary: {
4333
+ /** @example cfg_a1b2c3d4 */
4334
+ id: string;
4335
+ name: string;
4336
+ /**
4337
+ * @example web
4338
+ * @enum {string}
4339
+ */
4340
+ platform: 'web' | 'server';
4341
+ /**
4342
+ * Format: date-time
4343
+ * @example 2026-01-26T14:30:00.000Z
4344
+ */
4345
+ createdAt: string;
4346
+ /**
4347
+ * Format: date-time
4348
+ * @example 2026-01-26T14:30:00.000Z
4349
+ */
4350
+ updatedAt: string;
4351
+ };
4352
+ FlowSummary: {
4353
+ /** @example flow_a1b2c3d4 */
4354
+ id: string;
4355
+ /** @example my-website-flow */
4356
+ name: string;
4357
+ summary?: string;
4358
+ settings?: components['schemas']['FlowSettingsListItem'][];
4359
+ /**
4360
+ * Format: date-time
4361
+ * @example 2026-01-26T14:30:00.000Z
4362
+ */
4363
+ createdAt: string;
4364
+ /**
4365
+ * Format: date-time
4366
+ * @example 2026-01-26T14:30:00.000Z
4367
+ */
4368
+ updatedAt: string;
4369
+ /** Format: date-time */
4370
+ deletedAt: string | null;
4371
+ };
4372
+ FlowSettingsListItem: {
4373
+ /** @example cfg_a1b2c3d4 */
4374
+ id: string;
4375
+ name: string;
4376
+ /**
4377
+ * @example web
4378
+ * @enum {string}
4379
+ */
4380
+ platform: 'web' | 'server';
4381
+ deploymentStatus: string | null;
4382
+ deploymentUrl: string | null;
4383
+ };
4384
+ Version: {
4385
+ /** @example 1 */
4386
+ version: number;
4387
+ /**
4388
+ * Format: date-time
4389
+ * @example 2026-01-26T14:30:00.000Z
4390
+ */
4391
+ createdAt: string;
4392
+ /**
4393
+ * @example user
4394
+ * @enum {string}
4395
+ */
4396
+ createdBy: 'user' | 'auto_save' | 'restore';
4397
+ /** @example sha256:abc123... */
4398
+ contentHash?: string;
4399
+ };
4400
+ Project: {
4401
+ /** @example proj_x7y8z9 */
4402
+ id: string;
4403
+ /** @example My Website */
4404
+ name: string;
4405
+ /**
4406
+ * @example owner
4407
+ * @enum {string}
4408
+ */
4409
+ role: 'owner' | 'admin' | 'member' | 'deployer' | 'viewer';
4410
+ /**
4411
+ * Format: date-time
4412
+ * @example 2026-01-26T14:30:00.000Z
4413
+ */
4414
+ createdAt: string;
4415
+ /**
4416
+ * Format: date-time
4417
+ * @example 2026-01-26T14:30:00.000Z
4418
+ */
4419
+ updatedAt: string;
4420
+ };
4421
+ Member: {
4422
+ userId: string;
4423
+ /** Format: email */
4424
+ email: string;
4425
+ /** @enum {string} */
4426
+ role: 'owner' | 'admin' | 'member' | 'deployer' | 'viewer';
4427
+ /**
4428
+ * Format: date-time
4429
+ * @example 2026-01-26T14:30:00.000Z
4430
+ */
4431
+ createdAt: string;
4432
+ };
4433
+ ApiTokenSummary: {
4434
+ /** @example tok_a1b2c3d4 */
4435
+ id: string;
4436
+ /** @example CI Pipeline */
4437
+ name: string;
4438
+ /** @example sk-walkeros-abcd */
4439
+ prefix: string;
4440
+ /** @example manual */
4441
+ origin: string;
4442
+ /** @example null */
4443
+ projectId: string | null;
4444
+ /** @example null */
4445
+ scopes: string[] | null;
4446
+ /**
4447
+ * Format: date-time
4448
+ * @example 2026-01-26T14:30:00.000Z
4449
+ */
4450
+ createdAt: string;
4451
+ /**
4452
+ * Format: date-time
4453
+ * @example 2026-01-26T14:30:00.000Z
4454
+ */
4455
+ lastUsedAt: string | null;
4456
+ /**
4457
+ * Format: date-time
4458
+ * @example 2026-01-26T14:30:00.000Z
4459
+ */
4460
+ expiresAt: string | null;
4461
+ /**
4462
+ * Format: date-time
4463
+ * @example 2026-01-26T14:30:00.000Z
4464
+ */
4465
+ revokedAt: string | null;
2987
4466
  };
2988
- Flow: {
2989
- /** @example flow_a1b2c3d4 */
4467
+ FlowSettingsDetail: {
4468
+ /** @example cfg_a1b2c3d4 */
2990
4469
  id: string;
2991
- /** @example my-website-flow */
2992
4470
  name: string;
2993
- content: components['schemas']['FlowContent'];
4471
+ /**
4472
+ * @example web
4473
+ * @enum {string}
4474
+ */
4475
+ platform: 'web' | 'server';
4476
+ config: {
4477
+ [key: string]: unknown;
4478
+ };
4479
+ deployment?: {
4480
+ id: string;
4481
+ status: string;
4482
+ type: string;
4483
+ containerUrl?: string | null;
4484
+ publicUrl?: string | null;
4485
+ errorMessage?: string | null;
4486
+ /**
4487
+ * Format: date-time
4488
+ * @example 2026-01-26T14:30:00.000Z
4489
+ */
4490
+ createdAt: string;
4491
+ /**
4492
+ * Format: date-time
4493
+ * @example 2026-01-26T14:30:00.000Z
4494
+ */
4495
+ updatedAt: string;
4496
+ } | null;
2994
4497
  /**
2995
4498
  * Format: date-time
2996
4499
  * @example 2026-01-26T14:30:00.000Z
@@ -3001,14 +4504,20 @@ interface components {
3001
4504
  * @example 2026-01-26T14:30:00.000Z
3002
4505
  */
3003
4506
  updatedAt: string;
3004
- /** Format: date-time */
3005
- deletedAt?: string | null;
3006
4507
  };
3007
- FlowSummary: {
4508
+ DeploySettingsResponse: {
4509
+ deploymentId: string;
4510
+ /** @example cfg_a1b2c3d4 */
4511
+ settingsId: string;
4512
+ status: string;
4513
+ };
4514
+ FlowDetailResponse: {
3008
4515
  /** @example flow_a1b2c3d4 */
3009
4516
  id: string;
3010
4517
  /** @example my-website-flow */
3011
4518
  name: string;
4519
+ config: components['schemas']['FlowContent'];
4520
+ settings?: components['schemas']['FlowSettingsEnriched'][];
3012
4521
  /**
3013
4522
  * Format: date-time
3014
4523
  * @example 2026-01-26T14:30:00.000Z
@@ -3022,32 +4531,42 @@ interface components {
3022
4531
  /** Format: date-time */
3023
4532
  deletedAt: string | null;
3024
4533
  };
3025
- Version: {
3026
- /** @example 1 */
3027
- version: number;
4534
+ FlowSettingsEnriched: {
4535
+ id: string;
4536
+ name: string;
4537
+ /** @enum {string} */
4538
+ platform: 'web' | 'server';
4539
+ deployment: {
4540
+ id: string;
4541
+ slug: string;
4542
+ status: string;
4543
+ type: string;
4544
+ target: string | null;
4545
+ containerUrl: string | null;
4546
+ /**
4547
+ * Format: date-time
4548
+ * @example 2026-01-26T14:30:00.000Z
4549
+ */
4550
+ createdAt: string;
4551
+ updatedAt: string | null;
4552
+ } | null;
3028
4553
  /**
3029
4554
  * Format: date-time
3030
4555
  * @example 2026-01-26T14:30:00.000Z
3031
4556
  */
3032
4557
  createdAt: string;
3033
4558
  /**
3034
- * @example user
3035
- * @enum {string}
4559
+ * Format: date-time
4560
+ * @example 2026-01-26T14:30:00.000Z
3036
4561
  */
3037
- createdBy: 'user' | 'auto_save' | 'restore';
3038
- /** @example sha256:abc123... */
3039
- contentHash?: string;
4562
+ updatedAt: string;
3040
4563
  };
3041
- Project: {
3042
- /** @example proj_x7y8z9 */
4564
+ FlowUpdateResponse: {
4565
+ /** @example flow_a1b2c3d4 */
3043
4566
  id: string;
3044
- /** @example My Website */
4567
+ /** @example my-website-flow */
3045
4568
  name: string;
3046
- /**
3047
- * @example owner
3048
- * @enum {string}
3049
- */
3050
- role: 'owner' | 'member';
4569
+ config: components['schemas']['FlowContent'];
3051
4570
  /**
3052
4571
  * Format: date-time
3053
4572
  * @example 2026-01-26T14:30:00.000Z
@@ -3059,49 +4578,254 @@ interface components {
3059
4578
  */
3060
4579
  updatedAt: string;
3061
4580
  };
3062
- Member: {
3063
- userId: string;
3064
- /** Format: email */
3065
- email: string;
3066
- /** @enum {string} */
3067
- role: 'owner' | 'member';
4581
+ CreateProjectResponse: {
4582
+ /** @example proj_x7y8z9 */
4583
+ id: string;
4584
+ name: string;
3068
4585
  /**
3069
4586
  * Format: date-time
3070
4587
  * @example 2026-01-26T14:30:00.000Z
3071
4588
  */
3072
4589
  createdAt: string;
3073
4590
  };
3074
- ApiTokenSummary: {
3075
- /** @example tok_a1b2c3d4 */
4591
+ DeploymentSummary: {
4592
+ /** @example dep_a1b2c3d4 */
3076
4593
  id: string;
3077
- /** @example CI Pipeline */
3078
- name: string;
3079
- /** @example sk-walkeros-abcd */
3080
- prefix: string;
3081
- /** @example null */
3082
- projectId: string | null;
3083
- /** @example null */
3084
- scopes: string[] | null;
3085
4594
  /**
3086
- * Format: date-time
3087
- * @example 2026-01-26T14:30:00.000Z
4595
+ * @example web
4596
+ * @enum {string}
4597
+ */
4598
+ type: 'web' | 'server';
4599
+ /** @example k7m2x9p4q1w8 */
4600
+ slug: string;
4601
+ target: string | null;
4602
+ label: string | null;
4603
+ /**
4604
+ * @example cloud
4605
+ * @enum {string}
4606
+ */
4607
+ origin: 'cloud' | 'self-hosted';
4608
+ /**
4609
+ * @example active
4610
+ * @enum {string}
3088
4611
  */
4612
+ status:
4613
+ | 'idle'
4614
+ | 'deploying'
4615
+ | 'published'
4616
+ | 'active'
4617
+ | 'stopped'
4618
+ | 'failed';
4619
+ currentVersionNumber: number | null;
4620
+ url: string | null;
4621
+ /** Format: date-time */
3089
4622
  createdAt: string;
4623
+ /** Format: date-time */
4624
+ updatedAt: string;
4625
+ usageSummary?: {
4626
+ eventsIn24h: number;
4627
+ healthy: boolean;
4628
+ };
4629
+ };
4630
+ DeploymentDetailResponse: {
4631
+ /** @example dep_a1b2c3d4 */
4632
+ id: string;
3090
4633
  /**
3091
- * Format: date-time
3092
- * @example 2026-01-26T14:30:00.000Z
4634
+ * @example web
4635
+ * @enum {string}
3093
4636
  */
3094
- lastUsedAt: string | null;
4637
+ type: 'web' | 'server';
4638
+ /** @example k7m2x9p4q1w8 */
4639
+ slug: string;
4640
+ target: string | null;
4641
+ label: string | null;
3095
4642
  /**
3096
- * Format: date-time
3097
- * @example 2026-01-26T14:30:00.000Z
4643
+ * @example cloud
4644
+ * @enum {string}
3098
4645
  */
3099
- expiresAt: string | null;
4646
+ origin: 'cloud' | 'self-hosted';
3100
4647
  /**
3101
- * Format: date-time
3102
- * @example 2026-01-26T14:30:00.000Z
4648
+ * @example active
4649
+ * @enum {string}
3103
4650
  */
3104
- revokedAt: string | null;
4651
+ status:
4652
+ | 'idle'
4653
+ | 'deploying'
4654
+ | 'published'
4655
+ | 'active'
4656
+ | 'stopped'
4657
+ | 'failed';
4658
+ currentVersion: components['schemas']['DeploymentVersionDetail'];
4659
+ url: string | null;
4660
+ selfHosted: {
4661
+ /** Format: date-time */
4662
+ lastHeartbeatAt: string;
4663
+ instanceId: string | null;
4664
+ cliVersion: string | null;
4665
+ healthy: boolean;
4666
+ } | null;
4667
+ /** Format: date-time */
4668
+ createdAt: string;
4669
+ /** Format: date-time */
4670
+ updatedAt: string;
4671
+ };
4672
+ DeploymentVersionDetail: {
4673
+ number: number;
4674
+ status: string;
4675
+ source: {
4676
+ type: string;
4677
+ flowId?: string;
4678
+ flowSettingsId?: string;
4679
+ configHash?: string;
4680
+ };
4681
+ /** Format: date-time */
4682
+ publishedAt: string;
4683
+ publishedBy: string | null;
4684
+ } | null;
4685
+ CreateDeploymentResponse: {
4686
+ /** @example dep_a1b2c3d4 */
4687
+ id: string;
4688
+ /**
4689
+ * @example web
4690
+ * @enum {string}
4691
+ */
4692
+ type: 'web' | 'server';
4693
+ /** @example k7m2x9p4q1w8 */
4694
+ slug: string;
4695
+ target: string | null;
4696
+ label: string | null;
4697
+ /**
4698
+ * @example cloud
4699
+ * @enum {string}
4700
+ */
4701
+ origin: 'cloud' | 'self-hosted';
4702
+ /**
4703
+ * @example active
4704
+ * @enum {string}
4705
+ */
4706
+ status:
4707
+ | 'idle'
4708
+ | 'deploying'
4709
+ | 'published'
4710
+ | 'active'
4711
+ | 'stopped'
4712
+ | 'failed';
4713
+ currentVersionNumber: number | null;
4714
+ url: string | null;
4715
+ /** Format: date-time */
4716
+ createdAt: string;
4717
+ /** Format: date-time */
4718
+ updatedAt: string;
4719
+ usageSummary?: {
4720
+ eventsIn24h: number;
4721
+ healthy: boolean;
4722
+ };
4723
+ };
4724
+ ListDeploymentsResponse: {
4725
+ deployments: components['schemas']['DeploymentSummary'][];
4726
+ total: number;
4727
+ limit: number;
4728
+ offset: number;
4729
+ };
4730
+ UpdateDeploymentResponse: {
4731
+ /** @example dep_a1b2c3d4 */
4732
+ id: string;
4733
+ /**
4734
+ * @example web
4735
+ * @enum {string}
4736
+ */
4737
+ type: 'web' | 'server';
4738
+ /** @example k7m2x9p4q1w8 */
4739
+ slug: string;
4740
+ target: string | null;
4741
+ label: string | null;
4742
+ /**
4743
+ * @example cloud
4744
+ * @enum {string}
4745
+ */
4746
+ origin: 'cloud' | 'self-hosted';
4747
+ /**
4748
+ * @example active
4749
+ * @enum {string}
4750
+ */
4751
+ status:
4752
+ | 'idle'
4753
+ | 'deploying'
4754
+ | 'published'
4755
+ | 'active'
4756
+ | 'stopped'
4757
+ | 'failed';
4758
+ /** Format: date-time */
4759
+ createdAt: string;
4760
+ /** Format: date-time */
4761
+ updatedAt: string;
4762
+ };
4763
+ LatestDeploymentsByFlow: {
4764
+ [key: string]: {
4765
+ id: string;
4766
+ flowId: string;
4767
+ slug: string;
4768
+ type: string;
4769
+ status: string;
4770
+ target: string | null;
4771
+ containerUrl: string | null;
4772
+ createdAt: string;
4773
+ };
4774
+ };
4775
+ PublishVersionResponse: {
4776
+ versionNumber: number;
4777
+ versionId: string;
4778
+ /** @example dep_a1b2c3d4 */
4779
+ deploymentId: string;
4780
+ /** @enum {string} */
4781
+ status: 'deploying';
4782
+ source:
4783
+ | {
4784
+ /** @enum {string} */
4785
+ type: 'flow';
4786
+ flowId: string;
4787
+ flowSettingsName: string;
4788
+ }
4789
+ | {
4790
+ /** @enum {string} */
4791
+ type: 'config';
4792
+ };
4793
+ /** Format: date-time */
4794
+ createdAt: string;
4795
+ };
4796
+ ListDeploymentVersionsResponse: {
4797
+ versions: {
4798
+ number: number;
4799
+ status: string;
4800
+ source: {
4801
+ type: string;
4802
+ flowId?: string;
4803
+ flowSettingsId?: string;
4804
+ configHash?: string;
4805
+ };
4806
+ bundlePath: string | null;
4807
+ /** Format: date-time */
4808
+ publishedAt: string;
4809
+ publishedBy: string | null;
4810
+ }[];
4811
+ total: number;
4812
+ limit: number;
4813
+ offset: number;
4814
+ };
4815
+ HeartbeatResponse: {
4816
+ /** @enum {boolean} */
4817
+ ack: true;
4818
+ /** @example dep_a1b2c3d4 */
4819
+ deploymentId: string;
4820
+ /** @enum {string} */
4821
+ action: 'none' | 'stop' | 'update';
4822
+ versionNumber?: number;
4823
+ bundleUrl?: string;
4824
+ };
4825
+ ObserveTicketResponse: {
4826
+ ticket: string;
4827
+ /** Format: uri */
4828
+ observerUrl: string;
3105
4829
  };
3106
4830
  MagicLinkResponse: {
3107
4831
  /** @example true */
@@ -3115,10 +4839,7 @@ interface components {
3115
4839
  * @example user@example.com
3116
4840
  */
3117
4841
  email: string;
3118
- /**
3119
- * Format: uri
3120
- * @example /dashboard
3121
- */
4842
+ /** @example /dashboard */
3122
4843
  redirect_to?: string;
3123
4844
  };
3124
4845
  WhoamiResponse: {
@@ -3132,6 +4853,39 @@ interface components {
3132
4853
  /** @example null */
3133
4854
  projectId: string | null;
3134
4855
  };
4856
+ ListSessionsResponse: {
4857
+ sessions: {
4858
+ id: string;
4859
+ /** Format: date-time */
4860
+ createdAt: string;
4861
+ /** Format: date-time */
4862
+ expiresAt: string;
4863
+ /** Format: date-time */
4864
+ lastTouchedAt: string;
4865
+ isCurrent: boolean;
4866
+ }[];
4867
+ };
4868
+ DeviceCodeResponse: {
4869
+ deviceCode: string;
4870
+ userCode: string;
4871
+ expiresIn: number;
4872
+ interval: number;
4873
+ };
4874
+ ApproveDeviceResponse: {
4875
+ success: boolean;
4876
+ };
4877
+ ApproveDeviceRequest: {
4878
+ userCode: string;
4879
+ };
4880
+ DeviceTokenResponse: {
4881
+ token: string;
4882
+ email: string;
4883
+ userId: string;
4884
+ };
4885
+ DeviceTokenRequest: {
4886
+ deviceCode: string;
4887
+ hostname?: string;
4888
+ };
3135
4889
  ListProjectsResponse: {
3136
4890
  projects: components['schemas']['Project'][];
3137
4891
  total: number;
@@ -3156,11 +4910,11 @@ interface components {
3156
4910
  * @default member
3157
4911
  * @enum {string}
3158
4912
  */
3159
- role: 'owner' | 'member';
4913
+ role: 'owner' | 'admin' | 'member' | 'deployer' | 'viewer';
3160
4914
  };
3161
4915
  UpdateMemberRequest: {
3162
4916
  /** @enum {string} */
3163
- role: 'owner' | 'member';
4917
+ role: 'owner' | 'admin' | 'member' | 'deployer' | 'viewer';
3164
4918
  };
3165
4919
  ListFlowsResponse: {
3166
4920
  flows: components['schemas']['FlowSummary'][];
@@ -3169,17 +4923,84 @@ interface components {
3169
4923
  CreateFlowRequest: {
3170
4924
  /** @example my-website-flow */
3171
4925
  name: string;
3172
- content?: components['schemas']['FlowContent'];
4926
+ config?: components['schemas']['FlowContent'];
3173
4927
  };
3174
4928
  UpdateFlowRequest: {
3175
4929
  /** @example my-website-flow */
3176
4930
  name?: string;
3177
- content?: components['schemas']['FlowContent'];
4931
+ config?: components['schemas']['FlowContent'];
3178
4932
  };
3179
4933
  DuplicateFlowRequest: {
3180
4934
  /** @example my-website-flow */
3181
4935
  name?: string;
3182
4936
  };
4937
+ DeploymentResponse: {
4938
+ id: string;
4939
+ flowId: string;
4940
+ /** @enum {string} */
4941
+ type: 'web' | 'server';
4942
+ status: string;
4943
+ containerUrl: string | null;
4944
+ publicUrl?: string | null;
4945
+ errorMessage: string | null;
4946
+ /** Format: date-time */
4947
+ createdAt: string;
4948
+ /** Format: date-time */
4949
+ updatedAt: string;
4950
+ } | null;
4951
+ StartDeploymentResponse: {
4952
+ deploymentId: string;
4953
+ /** @enum {string} */
4954
+ type: 'web' | 'server';
4955
+ status: string;
4956
+ };
4957
+ ListSettingsResponse: {
4958
+ settings: components['schemas']['FlowSettingsSummary'][];
4959
+ };
4960
+ SettingsDeploymentResponse: {
4961
+ id: string;
4962
+ flowId: string;
4963
+ settingsId: string;
4964
+ /** @enum {string} */
4965
+ type: 'web' | 'server';
4966
+ status: string;
4967
+ containerUrl: string | null;
4968
+ publicUrl: string | null;
4969
+ errorMessage: string | null;
4970
+ /** Format: date-time */
4971
+ createdAt: string;
4972
+ /** Format: date-time */
4973
+ updatedAt: string;
4974
+ } | null;
4975
+ SettingsDeploymentDetailResponse: {
4976
+ id: string;
4977
+ flowId: string;
4978
+ settingsId: string;
4979
+ status: string;
4980
+ /** @enum {string} */
4981
+ type: 'web' | 'server';
4982
+ containerUrl: string | null;
4983
+ publicUrl: string | null;
4984
+ errorMessage: string | null;
4985
+ /** Format: date-time */
4986
+ createdAt: string;
4987
+ /** Format: date-time */
4988
+ updatedAt: string;
4989
+ };
4990
+ AdvanceSettingsDeploymentResponse: {
4991
+ id: string;
4992
+ flowId: string;
4993
+ /** @enum {string} */
4994
+ type: 'web' | 'server';
4995
+ status: string;
4996
+ containerUrl: string | null;
4997
+ publicUrl?: string | null;
4998
+ errorMessage: string | null;
4999
+ /** Format: date-time */
5000
+ createdAt: string;
5001
+ /** Format: date-time */
5002
+ updatedAt: string;
5003
+ };
3183
5004
  ListVersionsResponse: {
3184
5005
  data: components['schemas']['Version'][];
3185
5006
  /** @example flow_a1b2c3d4 */
@@ -3189,7 +5010,7 @@ interface components {
3189
5010
  GetVersionResponse: {
3190
5011
  /** @example 1 */
3191
5012
  version: number;
3192
- content: components['schemas']['FlowContent'];
5013
+ config: components['schemas']['FlowContent'];
3193
5014
  /**
3194
5015
  * Format: date-time
3195
5016
  * @example 2026-01-26T14:30:00.000Z
@@ -3229,14 +5050,15 @@ interface components {
3229
5050
  /** @example 90 */
3230
5051
  expiresInDays?: number | null;
3231
5052
  };
3232
- CreateTicketResponse: {
3233
- /** @example tkt_abc123... */
3234
- ticket: string;
3235
- /**
3236
- * Format: uri
3237
- * @example http://localhost:3001
3238
- */
3239
- observerUrl: string;
5053
+ BundleJobResponse: {
5054
+ jobId: string;
5055
+ state: string;
5056
+ hash: string;
5057
+ bundlePath: string;
5058
+ };
5059
+ RegisterRuntimeRequest: {
5060
+ flowId: string;
5061
+ bundlePath: string;
3240
5062
  };
3241
5063
  ValidateTicketResponse: {
3242
5064
  userId: string;
@@ -3249,38 +5071,6 @@ interface components {
3249
5071
  ValidateTicketRequest: {
3250
5072
  ticket: string;
3251
5073
  };
3252
- Deployment: {
3253
- /** @example dep_a1b2c3d4 */
3254
- id: string;
3255
- /** @example flow_a1b2c3d4 */
3256
- flowId: string;
3257
- /** @enum {string} */
3258
- type: 'web' | 'server';
3259
- /** @enum {string} */
3260
- status:
3261
- | 'bundling'
3262
- | 'deploying'
3263
- | 'active'
3264
- | 'failed'
3265
- | 'deleted'
3266
- | 'published';
3267
- containerUrl?: string | null;
3268
- publicUrl?: string | null;
3269
- scriptTag?: string | null;
3270
- errorMessage?: string | null;
3271
- /** Format: date-time */
3272
- createdAt: string;
3273
- /** Format: date-time */
3274
- updatedAt: string;
3275
- };
3276
- DeployResponse: {
3277
- /** @example dep_a1b2c3d4 */
3278
- deploymentId: string;
3279
- /** @enum {string} */
3280
- type: 'web' | 'server';
3281
- /** @example bundling */
3282
- status: string;
3283
- };
3284
5074
  HealthResponse: {
3285
5075
  /** @example ok */
3286
5076
  status: string;