@walkeros/cli 2.1.0 → 2.2.0-next-1772811722420

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
@@ -600,6 +600,8 @@ interface ValidateResult {
600
600
  /**
601
601
  * Programmatic API for validation.
602
602
  * Can be called directly from code or MCP server.
603
+ *
604
+ * Accepts parsed objects, JSON strings, file paths, or URLs as input.
603
605
  */
604
606
  declare function validate(type: ValidationType, input: unknown, options?: {
605
607
  flow?: string;
@@ -657,7 +659,7 @@ declare function listProjects(): Promise<{
657
659
  projects: {
658
660
  id: string;
659
661
  name: string;
660
- role: "owner" | "member";
662
+ role: "owner" | "admin" | "member" | "deployer" | "viewer";
661
663
  createdAt: string;
662
664
  updatedAt: string;
663
665
  }[];
@@ -668,7 +670,7 @@ declare function getProject(options?: {
668
670
  }): Promise<{
669
671
  id: string;
670
672
  name: string;
671
- role: "owner" | "member";
673
+ role: "owner" | "admin" | "member" | "deployer" | "viewer";
672
674
  createdAt: string;
673
675
  updatedAt: string;
674
676
  }>;
@@ -677,9 +679,7 @@ declare function createProject(options: {
677
679
  }): Promise<{
678
680
  id: string;
679
681
  name: string;
680
- role: "owner" | "member";
681
682
  createdAt: string;
682
- updatedAt: string;
683
683
  }>;
684
684
  declare function updateProject(options: {
685
685
  projectId?: string;
@@ -687,7 +687,7 @@ declare function updateProject(options: {
687
687
  }): Promise<{
688
688
  id: string;
689
689
  name: string;
690
- role: "owner" | "member";
690
+ role: "owner" | "admin" | "member" | "deployer" | "viewer";
691
691
  createdAt: string;
692
692
  updatedAt: string;
693
693
  }>;
@@ -718,6 +718,14 @@ declare function listFlows(options?: ListFlowsOptions): Promise<{
718
718
  flows: {
719
719
  id: string;
720
720
  name: string;
721
+ summary?: string | undefined;
722
+ configs?: {
723
+ id: string;
724
+ name: string;
725
+ platform: "web" | "server";
726
+ deploymentStatus: string | null;
727
+ deploymentUrl: string | null;
728
+ }[] | undefined;
721
729
  createdAt: string;
722
730
  updatedAt: string;
723
731
  deletedAt: string | null;
@@ -727,11 +735,12 @@ declare function listFlows(options?: ListFlowsOptions): Promise<{
727
735
  declare function getFlow(options: {
728
736
  flowId: string;
729
737
  projectId?: string;
738
+ fields?: string[];
730
739
  }): Promise<{
731
740
  id: string;
732
741
  name: string;
733
742
  content: {
734
- version: 1;
743
+ version: 2;
735
744
  $schema?: string | undefined;
736
745
  include?: string[] | undefined;
737
746
  variables?: {
@@ -743,10 +752,30 @@ declare function getFlow(options: {
743
752
  flows?: {
744
753
  [x: string]: unknown;
745
754
  } | undefined;
755
+ contract?: {
756
+ [x: string]: unknown;
757
+ } | undefined;
746
758
  };
759
+ configs?: {
760
+ id: string;
761
+ name: string;
762
+ platform: "web" | "server";
763
+ deployment: {
764
+ id: string;
765
+ slug: string;
766
+ status: string;
767
+ type: string;
768
+ target: string | null;
769
+ containerUrl: string | null;
770
+ createdAt: string;
771
+ updatedAt: string | null;
772
+ } | null;
773
+ createdAt: string;
774
+ updatedAt: string;
775
+ }[] | undefined;
747
776
  createdAt: string;
748
777
  updatedAt: string;
749
- deletedAt?: string | null | undefined;
778
+ deletedAt: string | null;
750
779
  }>;
751
780
  declare function createFlow(options: {
752
781
  name: string;
@@ -756,7 +785,7 @@ declare function createFlow(options: {
756
785
  id: string;
757
786
  name: string;
758
787
  content: {
759
- version: 1;
788
+ version: 2;
760
789
  $schema?: string | undefined;
761
790
  include?: string[] | undefined;
762
791
  variables?: {
@@ -768,7 +797,17 @@ declare function createFlow(options: {
768
797
  flows?: {
769
798
  [x: string]: unknown;
770
799
  } | undefined;
800
+ contract?: {
801
+ [x: string]: unknown;
802
+ } | undefined;
771
803
  };
804
+ configs?: {
805
+ id: string;
806
+ name: string;
807
+ platform: "web" | "server";
808
+ createdAt: string;
809
+ updatedAt: string;
810
+ }[] | undefined;
772
811
  createdAt: string;
773
812
  updatedAt: string;
774
813
  deletedAt?: string | null | undefined;
@@ -778,11 +817,12 @@ declare function updateFlow(options: {
778
817
  name?: string;
779
818
  content?: Record<string, unknown>;
780
819
  projectId?: string;
820
+ mergePatch?: boolean;
781
821
  }): Promise<{
782
822
  id: string;
783
823
  name: string;
784
824
  content: {
785
- version: 1;
825
+ version: 2;
786
826
  $schema?: string | undefined;
787
827
  include?: string[] | undefined;
788
828
  variables?: {
@@ -794,11 +834,13 @@ declare function updateFlow(options: {
794
834
  flows?: {
795
835
  [x: string]: unknown;
796
836
  } | undefined;
837
+ contract?: {
838
+ [x: string]: unknown;
839
+ } | undefined;
797
840
  };
798
841
  createdAt: string;
799
842
  updatedAt: string;
800
- deletedAt?: string | null | undefined;
801
- }>;
843
+ } | undefined>;
802
844
  declare function deleteFlow(options: {
803
845
  flowId: string;
804
846
  projectId?: string;
@@ -813,7 +855,7 @@ declare function duplicateFlow(options: {
813
855
  id: string;
814
856
  name: string;
815
857
  content: {
816
- version: 1;
858
+ version: 2;
817
859
  $schema?: string | undefined;
818
860
  include?: string[] | undefined;
819
861
  variables?: {
@@ -825,7 +867,17 @@ declare function duplicateFlow(options: {
825
867
  flows?: {
826
868
  [x: string]: unknown;
827
869
  } | undefined;
870
+ contract?: {
871
+ [x: string]: unknown;
872
+ } | undefined;
828
873
  };
874
+ configs?: {
875
+ id: string;
876
+ name: string;
877
+ platform: "web" | "server";
878
+ createdAt: string;
879
+ updatedAt: string;
880
+ }[] | undefined;
829
881
  createdAt: string;
830
882
  updatedAt: string;
831
883
  deletedAt?: string | null | undefined;
@@ -1099,7 +1151,7 @@ interface paths {
1099
1151
  patch?: never;
1100
1152
  trace?: never;
1101
1153
  };
1102
- '/api/projects': {
1154
+ '/api/sessions': {
1103
1155
  parameters: {
1104
1156
  query?: never;
1105
1157
  header?: never;
@@ -1107,8 +1159,8 @@ interface paths {
1107
1159
  cookie?: never;
1108
1160
  };
1109
1161
  /**
1110
- * List my projects
1111
- * @description List all projects where the authenticated user is a member.
1162
+ * List sessions
1163
+ * @description List all active sessions for the authenticated user. The current session is marked with isCurrent: true.
1112
1164
  */
1113
1165
  get: {
1114
1166
  parameters: {
@@ -1119,13 +1171,13 @@ interface paths {
1119
1171
  };
1120
1172
  requestBody?: never;
1121
1173
  responses: {
1122
- /** @description List of projects */
1174
+ /** @description List of active sessions */
1123
1175
  200: {
1124
1176
  headers: {
1125
1177
  [name: string]: unknown;
1126
1178
  };
1127
1179
  content: {
1128
- 'application/json': components['schemas']['ListProjectsResponse'];
1180
+ 'application/json': components['schemas']['ListSessionsResponse'];
1129
1181
  };
1130
1182
  };
1131
1183
  /** @description Unauthorized */
@@ -1140,34 +1192,56 @@ interface paths {
1140
1192
  };
1141
1193
  };
1142
1194
  put?: never;
1195
+ post?: never;
1196
+ delete?: never;
1197
+ options?: never;
1198
+ head?: never;
1199
+ patch?: never;
1200
+ trace?: never;
1201
+ };
1202
+ '/api/sessions/{sessionId}': {
1203
+ parameters: {
1204
+ query?: never;
1205
+ header?: never;
1206
+ path?: never;
1207
+ cookie?: never;
1208
+ };
1209
+ get?: never;
1210
+ put?: never;
1211
+ post?: never;
1143
1212
  /**
1144
- * Create project
1145
- * @description Create a new project. The authenticated user becomes the owner.
1213
+ * Revoke session
1214
+ * @description Revoke a session by ID. Cannot revoke the current session (use logout instead).
1146
1215
  */
1147
- post: {
1216
+ delete: {
1148
1217
  parameters: {
1149
1218
  query?: never;
1150
1219
  header?: never;
1151
- path?: never;
1152
- cookie?: never;
1153
- };
1154
- requestBody?: {
1155
- content: {
1156
- 'application/json': components['schemas']['CreateProjectRequest'];
1220
+ path: {
1221
+ sessionId: string;
1157
1222
  };
1223
+ cookie?: never;
1158
1224
  };
1225
+ requestBody?: never;
1159
1226
  responses: {
1160
- /** @description Project created */
1161
- 201: {
1227
+ /** @description Session revoked */
1228
+ 204: {
1229
+ headers: {
1230
+ [name: string]: unknown;
1231
+ };
1232
+ content?: never;
1233
+ };
1234
+ /** @description Unauthorized */
1235
+ 401: {
1162
1236
  headers: {
1163
1237
  [name: string]: unknown;
1164
1238
  };
1165
1239
  content: {
1166
- 'application/json': components['schemas']['Project'];
1240
+ 'application/json': components['schemas']['ErrorResponse'];
1167
1241
  };
1168
1242
  };
1169
- /** @description Validation error */
1170
- 400: {
1243
+ /** @description Forbidden */
1244
+ 403: {
1171
1245
  headers: {
1172
1246
  [name: string]: unknown;
1173
1247
  };
@@ -1175,8 +1249,8 @@ interface paths {
1175
1249
  'application/json': components['schemas']['ErrorResponse'];
1176
1250
  };
1177
1251
  };
1178
- /** @description Unauthorized */
1179
- 401: {
1252
+ /** @description Not found */
1253
+ 404: {
1180
1254
  headers: {
1181
1255
  [name: string]: unknown;
1182
1256
  };
@@ -1186,41 +1260,83 @@ interface paths {
1186
1260
  };
1187
1261
  };
1188
1262
  };
1189
- delete?: never;
1190
1263
  options?: never;
1191
1264
  head?: never;
1192
1265
  patch?: never;
1193
1266
  trace?: never;
1194
1267
  };
1195
- '/api/projects/{projectId}': {
1268
+ '/api/auth/device/code': {
1196
1269
  parameters: {
1197
1270
  query?: never;
1198
1271
  header?: never;
1199
1272
  path?: never;
1200
1273
  cookie?: never;
1201
1274
  };
1275
+ get?: never;
1276
+ put?: never;
1202
1277
  /**
1203
- * Get project
1204
- * @description Get a single project by ID. Requires membership.
1278
+ * Request device code
1279
+ * @description Generate a device code and user code for the device authorization flow.
1205
1280
  */
1206
- get: {
1281
+ post: {
1207
1282
  parameters: {
1208
1283
  query?: never;
1209
1284
  header?: never;
1210
- path: {
1211
- projectId: string;
1212
- };
1285
+ path?: never;
1213
1286
  cookie?: never;
1214
1287
  };
1215
1288
  requestBody?: never;
1216
1289
  responses: {
1217
- /** @description Project details */
1290
+ /** @description Device code generated */
1218
1291
  200: {
1219
1292
  headers: {
1220
1293
  [name: string]: unknown;
1221
1294
  };
1222
1295
  content: {
1223
- 'application/json': components['schemas']['Project'];
1296
+ 'application/json': components['schemas']['DeviceCodeResponse'];
1297
+ };
1298
+ };
1299
+ };
1300
+ };
1301
+ delete?: never;
1302
+ options?: never;
1303
+ head?: never;
1304
+ patch?: never;
1305
+ trace?: never;
1306
+ };
1307
+ '/api/auth/device/approve': {
1308
+ parameters: {
1309
+ query?: never;
1310
+ header?: never;
1311
+ path?: never;
1312
+ cookie?: never;
1313
+ };
1314
+ get?: never;
1315
+ put?: never;
1316
+ /**
1317
+ * Approve device code
1318
+ * @description Approve a device authorization request using the user code. Requires authentication.
1319
+ */
1320
+ post: {
1321
+ parameters: {
1322
+ query?: never;
1323
+ header?: never;
1324
+ path?: never;
1325
+ cookie?: never;
1326
+ };
1327
+ requestBody?: {
1328
+ content: {
1329
+ 'application/json': components['schemas']['ApproveDeviceRequest'];
1330
+ };
1331
+ };
1332
+ responses: {
1333
+ /** @description Device approved */
1334
+ 200: {
1335
+ headers: {
1336
+ [name: string]: unknown;
1337
+ };
1338
+ content: {
1339
+ 'application/json': components['schemas']['ApproveDeviceResponse'];
1224
1340
  };
1225
1341
  };
1226
1342
  /** @description Unauthorized */
@@ -1243,32 +1359,49 @@ interface paths {
1243
1359
  };
1244
1360
  };
1245
1361
  };
1362
+ delete?: never;
1363
+ options?: never;
1364
+ head?: never;
1365
+ patch?: never;
1366
+ trace?: never;
1367
+ };
1368
+ '/api/auth/device/token': {
1369
+ parameters: {
1370
+ query?: never;
1371
+ header?: never;
1372
+ path?: never;
1373
+ cookie?: never;
1374
+ };
1375
+ get?: never;
1246
1376
  put?: never;
1247
- post?: never;
1248
1377
  /**
1249
- * Delete project
1250
- * @description Delete a project and all its resources. Requires owner role.
1378
+ * Poll device token
1379
+ * @description Poll for authorization status using the device code. Returns a token when approved.
1251
1380
  */
1252
- delete: {
1381
+ post: {
1253
1382
  parameters: {
1254
1383
  query?: never;
1255
1384
  header?: never;
1256
- path: {
1257
- projectId: string;
1258
- };
1385
+ path?: never;
1259
1386
  cookie?: never;
1260
1387
  };
1261
- requestBody?: never;
1388
+ requestBody?: {
1389
+ content: {
1390
+ 'application/json': components['schemas']['DeviceTokenRequest'];
1391
+ };
1392
+ };
1262
1393
  responses: {
1263
- /** @description Project deleted */
1264
- 204: {
1394
+ /** @description Authorization approved */
1395
+ 200: {
1265
1396
  headers: {
1266
1397
  [name: string]: unknown;
1267
1398
  };
1268
- content?: never;
1399
+ content: {
1400
+ 'application/json': components['schemas']['DeviceTokenResponse'];
1401
+ };
1269
1402
  };
1270
- /** @description Unauthorized */
1271
- 401: {
1403
+ /** @description Pending, slow down, or expired */
1404
+ 400: {
1272
1405
  headers: {
1273
1406
  [name: string]: unknown;
1274
1407
  };
@@ -1276,17 +1409,45 @@ interface paths {
1276
1409
  'application/json': components['schemas']['ErrorResponse'];
1277
1410
  };
1278
1411
  };
1279
- /** @description Forbidden */
1280
- 403: {
1412
+ };
1413
+ };
1414
+ delete?: never;
1415
+ options?: never;
1416
+ head?: never;
1417
+ patch?: never;
1418
+ trace?: never;
1419
+ };
1420
+ '/api/projects': {
1421
+ parameters: {
1422
+ query?: never;
1423
+ header?: never;
1424
+ path?: never;
1425
+ cookie?: never;
1426
+ };
1427
+ /**
1428
+ * List my projects
1429
+ * @description List all projects where the authenticated user is a member.
1430
+ */
1431
+ get: {
1432
+ parameters: {
1433
+ query?: never;
1434
+ header?: never;
1435
+ path?: never;
1436
+ cookie?: never;
1437
+ };
1438
+ requestBody?: never;
1439
+ responses: {
1440
+ /** @description List of projects */
1441
+ 200: {
1281
1442
  headers: {
1282
1443
  [name: string]: unknown;
1283
1444
  };
1284
1445
  content: {
1285
- 'application/json': components['schemas']['ErrorResponse'];
1446
+ 'application/json': components['schemas']['ListProjectsResponse'];
1286
1447
  };
1287
1448
  };
1288
- /** @description Not found */
1289
- 404: {
1449
+ /** @description Unauthorized */
1450
+ 401: {
1290
1451
  headers: {
1291
1452
  [name: string]: unknown;
1292
1453
  };
@@ -1296,34 +1457,31 @@ interface paths {
1296
1457
  };
1297
1458
  };
1298
1459
  };
1299
- options?: never;
1300
- head?: never;
1460
+ put?: never;
1301
1461
  /**
1302
- * Update project
1303
- * @description Update project details. Requires owner role.
1462
+ * Create project
1463
+ * @description Create a new project. The authenticated user becomes the owner.
1304
1464
  */
1305
- patch: {
1465
+ post: {
1306
1466
  parameters: {
1307
1467
  query?: never;
1308
1468
  header?: never;
1309
- path: {
1310
- projectId: string;
1311
- };
1469
+ path?: never;
1312
1470
  cookie?: never;
1313
1471
  };
1314
1472
  requestBody?: {
1315
1473
  content: {
1316
- 'application/json': components['schemas']['UpdateProjectRequest'];
1474
+ 'application/json': components['schemas']['CreateProjectRequest'];
1317
1475
  };
1318
1476
  };
1319
1477
  responses: {
1320
- /** @description Project updated */
1321
- 200: {
1478
+ /** @description Project created */
1479
+ 201: {
1322
1480
  headers: {
1323
1481
  [name: string]: unknown;
1324
1482
  };
1325
1483
  content: {
1326
- 'application/json': components['schemas']['Project'];
1484
+ 'application/json': components['schemas']['CreateProjectResponse'];
1327
1485
  };
1328
1486
  };
1329
1487
  /** @description Validation error */
@@ -1344,29 +1502,15 @@ interface paths {
1344
1502
  'application/json': components['schemas']['ErrorResponse'];
1345
1503
  };
1346
1504
  };
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
1505
  };
1366
1506
  };
1507
+ delete?: never;
1508
+ options?: never;
1509
+ head?: never;
1510
+ patch?: never;
1367
1511
  trace?: never;
1368
1512
  };
1369
- '/api/projects/{projectId}/members': {
1513
+ '/api/projects/{projectId}': {
1370
1514
  parameters: {
1371
1515
  query?: never;
1372
1516
  header?: never;
@@ -1374,8 +1518,8 @@ interface paths {
1374
1518
  cookie?: never;
1375
1519
  };
1376
1520
  /**
1377
- * List members
1378
- * @description List all members of a project. Requires membership.
1521
+ * Get project
1522
+ * @description Get a single project by ID. Requires membership.
1379
1523
  */
1380
1524
  get: {
1381
1525
  parameters: {
@@ -1388,13 +1532,187 @@ interface paths {
1388
1532
  };
1389
1533
  requestBody?: never;
1390
1534
  responses: {
1391
- /** @description List of members */
1535
+ /** @description Project details */
1392
1536
  200: {
1393
1537
  headers: {
1394
1538
  [name: string]: unknown;
1395
1539
  };
1396
1540
  content: {
1397
- 'application/json': components['schemas']['ListMembersResponse'];
1541
+ 'application/json': components['schemas']['Project'];
1542
+ };
1543
+ };
1544
+ /** @description Unauthorized */
1545
+ 401: {
1546
+ headers: {
1547
+ [name: string]: unknown;
1548
+ };
1549
+ content: {
1550
+ 'application/json': components['schemas']['ErrorResponse'];
1551
+ };
1552
+ };
1553
+ /** @description Not found */
1554
+ 404: {
1555
+ headers: {
1556
+ [name: string]: unknown;
1557
+ };
1558
+ content: {
1559
+ 'application/json': components['schemas']['ErrorResponse'];
1560
+ };
1561
+ };
1562
+ };
1563
+ };
1564
+ put?: never;
1565
+ post?: never;
1566
+ /**
1567
+ * Delete project
1568
+ * @description Delete a project and all its resources. Requires owner role.
1569
+ */
1570
+ delete: {
1571
+ parameters: {
1572
+ query?: never;
1573
+ header?: never;
1574
+ path: {
1575
+ projectId: string;
1576
+ };
1577
+ cookie?: never;
1578
+ };
1579
+ requestBody?: never;
1580
+ responses: {
1581
+ /** @description Project deleted */
1582
+ 204: {
1583
+ headers: {
1584
+ [name: string]: unknown;
1585
+ };
1586
+ content?: never;
1587
+ };
1588
+ /** @description Unauthorized */
1589
+ 401: {
1590
+ headers: {
1591
+ [name: string]: unknown;
1592
+ };
1593
+ content: {
1594
+ 'application/json': components['schemas']['ErrorResponse'];
1595
+ };
1596
+ };
1597
+ /** @description Forbidden */
1598
+ 403: {
1599
+ headers: {
1600
+ [name: string]: unknown;
1601
+ };
1602
+ content: {
1603
+ 'application/json': components['schemas']['ErrorResponse'];
1604
+ };
1605
+ };
1606
+ /** @description Not found */
1607
+ 404: {
1608
+ headers: {
1609
+ [name: string]: unknown;
1610
+ };
1611
+ content: {
1612
+ 'application/json': components['schemas']['ErrorResponse'];
1613
+ };
1614
+ };
1615
+ };
1616
+ };
1617
+ options?: never;
1618
+ head?: never;
1619
+ /**
1620
+ * Update project
1621
+ * @description Update project details. Requires owner role.
1622
+ */
1623
+ patch: {
1624
+ parameters: {
1625
+ query?: never;
1626
+ header?: never;
1627
+ path: {
1628
+ projectId: string;
1629
+ };
1630
+ cookie?: never;
1631
+ };
1632
+ requestBody?: {
1633
+ content: {
1634
+ 'application/json': components['schemas']['UpdateProjectRequest'];
1635
+ };
1636
+ };
1637
+ responses: {
1638
+ /** @description Project updated */
1639
+ 200: {
1640
+ headers: {
1641
+ [name: string]: unknown;
1642
+ };
1643
+ content: {
1644
+ 'application/json': components['schemas']['Project'];
1645
+ };
1646
+ };
1647
+ /** @description Validation error */
1648
+ 400: {
1649
+ headers: {
1650
+ [name: string]: unknown;
1651
+ };
1652
+ content: {
1653
+ 'application/json': components['schemas']['ErrorResponse'];
1654
+ };
1655
+ };
1656
+ /** @description Unauthorized */
1657
+ 401: {
1658
+ headers: {
1659
+ [name: string]: unknown;
1660
+ };
1661
+ content: {
1662
+ 'application/json': components['schemas']['ErrorResponse'];
1663
+ };
1664
+ };
1665
+ /** @description Forbidden */
1666
+ 403: {
1667
+ headers: {
1668
+ [name: string]: unknown;
1669
+ };
1670
+ content: {
1671
+ 'application/json': components['schemas']['ErrorResponse'];
1672
+ };
1673
+ };
1674
+ /** @description Not found */
1675
+ 404: {
1676
+ headers: {
1677
+ [name: string]: unknown;
1678
+ };
1679
+ content: {
1680
+ 'application/json': components['schemas']['ErrorResponse'];
1681
+ };
1682
+ };
1683
+ };
1684
+ };
1685
+ trace?: never;
1686
+ };
1687
+ '/api/projects/{projectId}/members': {
1688
+ parameters: {
1689
+ query?: never;
1690
+ header?: never;
1691
+ path?: never;
1692
+ cookie?: never;
1693
+ };
1694
+ /**
1695
+ * List members
1696
+ * @description List all members of a project. Requires membership.
1697
+ */
1698
+ get: {
1699
+ parameters: {
1700
+ query?: never;
1701
+ header?: never;
1702
+ path: {
1703
+ projectId: string;
1704
+ };
1705
+ cookie?: never;
1706
+ };
1707
+ requestBody?: never;
1708
+ responses: {
1709
+ /** @description List of members */
1710
+ 200: {
1711
+ headers: {
1712
+ [name: string]: unknown;
1713
+ };
1714
+ content: {
1715
+ 'application/json': components['schemas']['ListMembersResponse'];
1398
1716
  };
1399
1717
  };
1400
1718
  /** @description Unauthorized */
@@ -1769,11 +2087,14 @@ interface paths {
1769
2087
  };
1770
2088
  /**
1771
2089
  * Get flow
1772
- * @description Get a single flow by ID.
2090
+ * @description Get a single flow by ID. Use ?fields to select specific sections (reduces response size).
1773
2091
  */
1774
2092
  get: {
1775
2093
  parameters: {
1776
- query?: never;
2094
+ query?: {
2095
+ /** @description Comma-separated dot-paths to select specific fields (e.g., "content.variables,content.flows.web.sources"). Always includes id, createdAt, updatedAt. */
2096
+ fields?: string;
2097
+ };
1777
2098
  header?: never;
1778
2099
  path: {
1779
2100
  projectId: string;
@@ -1789,7 +2110,7 @@ interface paths {
1789
2110
  [name: string]: unknown;
1790
2111
  };
1791
2112
  content: {
1792
- 'application/json': components['schemas']['Flow'];
2113
+ 'application/json': components['schemas']['FlowDetailResponse'];
1793
2114
  };
1794
2115
  };
1795
2116
  /** @description Unauthorized */
@@ -1821,7 +2142,10 @@ interface paths {
1821
2142
  delete: {
1822
2143
  parameters: {
1823
2144
  query?: never;
1824
- header?: never;
2145
+ header?: {
2146
+ /** @description ETag from a previous GET. Returns 412 if flow was modified since. */
2147
+ 'if-match'?: string;
2148
+ };
1825
2149
  path: {
1826
2150
  projectId: string;
1827
2151
  flowId: string;
@@ -1864,18 +2188,28 @@ interface paths {
1864
2188
  'application/json': components['schemas']['ErrorResponse'];
1865
2189
  };
1866
2190
  };
2191
+ /** @description ETag mismatch — flow was modified since last read */
2192
+ 412: {
2193
+ headers: {
2194
+ [name: string]: unknown;
2195
+ };
2196
+ content?: never;
2197
+ };
1867
2198
  };
1868
2199
  };
1869
2200
  options?: never;
1870
2201
  head?: never;
1871
2202
  /**
1872
2203
  * Update flow
1873
- * @description Update an existing flow. Creates a version snapshot before applying changes. Requires owner role.
2204
+ * @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).
1874
2205
  */
1875
2206
  patch: {
1876
2207
  parameters: {
1877
2208
  query?: never;
1878
- header?: never;
2209
+ header?: {
2210
+ /** @description ETag from a previous GET. Returns 412 if flow was modified since. */
2211
+ 'if-match'?: string;
2212
+ };
1879
2213
  path: {
1880
2214
  projectId: string;
1881
2215
  flowId: string;
@@ -1885,6 +2219,7 @@ interface paths {
1885
2219
  requestBody?: {
1886
2220
  content: {
1887
2221
  'application/json': components['schemas']['UpdateFlowRequest'];
2222
+ 'application/merge-patch+json': components['schemas']['UpdateFlowRequest'];
1888
2223
  };
1889
2224
  };
1890
2225
  responses: {
@@ -1894,7 +2229,7 @@ interface paths {
1894
2229
  [name: string]: unknown;
1895
2230
  };
1896
2231
  content: {
1897
- 'application/json': components['schemas']['Flow'];
2232
+ 'application/json': components['schemas']['FlowUpdateResponse'];
1898
2233
  };
1899
2234
  };
1900
2235
  /** @description Validation error */
@@ -1942,6 +2277,13 @@ interface paths {
1942
2277
  'application/json': components['schemas']['ErrorResponse'];
1943
2278
  };
1944
2279
  };
2280
+ /** @description ETag mismatch — flow was modified since last read */
2281
+ 412: {
2282
+ headers: {
2283
+ [name: string]: unknown;
2284
+ };
2285
+ content?: never;
2286
+ };
1945
2287
  };
1946
2288
  };
1947
2289
  trace?: never;
@@ -2037,7 +2379,7 @@ interface paths {
2037
2379
  patch?: never;
2038
2380
  trace?: never;
2039
2381
  };
2040
- '/api/projects/{projectId}/flows/{flowId}/versions': {
2382
+ '/api/projects/{projectId}/flows/{flowId}/deploy': {
2041
2383
  parameters: {
2042
2384
  query?: never;
2043
2385
  header?: never;
@@ -2045,8 +2387,8 @@ interface paths {
2045
2387
  cookie?: never;
2046
2388
  };
2047
2389
  /**
2048
- * List versions
2049
- * @description List all versions for a flow.
2390
+ * Get latest deployment
2391
+ * @description Get the latest deployment for a flow.
2050
2392
  */
2051
2393
  get: {
2052
2394
  parameters: {
@@ -2060,13 +2402,13 @@ interface paths {
2060
2402
  };
2061
2403
  requestBody?: never;
2062
2404
  responses: {
2063
- /** @description List of versions */
2405
+ /** @description Latest deployment (or null) */
2064
2406
  200: {
2065
2407
  headers: {
2066
2408
  [name: string]: unknown;
2067
2409
  };
2068
2410
  content: {
2069
- 'application/json': components['schemas']['ListVersionsResponse'];
2411
+ 'application/json': components['schemas']['DeploymentResponse'];
2070
2412
  };
2071
2413
  };
2072
2414
  /** @description Unauthorized */
@@ -2090,44 +2432,38 @@ interface paths {
2090
2432
  };
2091
2433
  };
2092
2434
  put?: never;
2093
- post?: never;
2094
- delete?: never;
2095
- options?: never;
2096
- 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
2435
  /**
2108
- * Get version
2109
- * @description Get a specific version of a flow.
2436
+ * Start deployment
2437
+ * @description Start a new deployment for a flow. Returns 400 AMBIGUOUS_CONFIG if the flow has multiple named configs — use the per-config deploy endpoint instead.
2110
2438
  */
2111
- get: {
2439
+ post: {
2112
2440
  parameters: {
2113
2441
  query?: never;
2114
2442
  header?: never;
2115
2443
  path: {
2116
2444
  projectId: string;
2117
2445
  flowId: string;
2118
- versionNumber: number;
2119
2446
  };
2120
2447
  cookie?: never;
2121
2448
  };
2122
2449
  requestBody?: never;
2123
2450
  responses: {
2124
- /** @description Version details with content */
2125
- 200: {
2451
+ /** @description Deployment started */
2452
+ 201: {
2126
2453
  headers: {
2127
2454
  [name: string]: unknown;
2128
2455
  };
2129
2456
  content: {
2130
- 'application/json': components['schemas']['GetVersionResponse'];
2457
+ 'application/json': components['schemas']['StartDeploymentResponse'];
2458
+ };
2459
+ };
2460
+ /** @description Validation error */
2461
+ 400: {
2462
+ headers: {
2463
+ [name: string]: unknown;
2464
+ };
2465
+ content: {
2466
+ 'application/json': components['schemas']['ErrorResponse'];
2131
2467
  };
2132
2468
  };
2133
2469
  /** @description Unauthorized */
@@ -2148,49 +2484,63 @@ interface paths {
2148
2484
  'application/json': components['schemas']['ErrorResponse'];
2149
2485
  };
2150
2486
  };
2487
+ /** @description Deployment already in progress */
2488
+ 409: {
2489
+ headers: {
2490
+ [name: string]: unknown;
2491
+ };
2492
+ content: {
2493
+ 'application/json': components['schemas']['ErrorResponse'];
2494
+ };
2495
+ };
2496
+ /** @description Service unavailable */
2497
+ 503: {
2498
+ headers: {
2499
+ [name: string]: unknown;
2500
+ };
2501
+ content: {
2502
+ 'application/json': components['schemas']['ErrorResponse'];
2503
+ };
2504
+ };
2151
2505
  };
2152
2506
  };
2153
- put?: never;
2154
- post?: never;
2155
2507
  delete?: never;
2156
2508
  options?: never;
2157
2509
  head?: never;
2158
2510
  patch?: never;
2159
2511
  trace?: never;
2160
2512
  };
2161
- '/api/projects/{projectId}/flows/{flowId}/versions/{versionNumber}/restore': {
2513
+ '/api/projects/{projectId}/flows/{flowId}/deploy/{deploymentId}': {
2162
2514
  parameters: {
2163
2515
  query?: never;
2164
2516
  header?: never;
2165
2517
  path?: never;
2166
2518
  cookie?: never;
2167
2519
  };
2168
- get?: never;
2169
- put?: never;
2170
2520
  /**
2171
- * Restore version
2172
- * @description Restore a flow to a specific version. Creates a new version snapshot. Requires owner role.
2521
+ * Get deployment
2522
+ * @description Get a specific deployment by ID.
2173
2523
  */
2174
- post: {
2524
+ get: {
2175
2525
  parameters: {
2176
2526
  query?: never;
2177
2527
  header?: never;
2178
2528
  path: {
2179
2529
  projectId: string;
2180
2530
  flowId: string;
2181
- versionNumber: number;
2531
+ deploymentId: string;
2182
2532
  };
2183
2533
  cookie?: never;
2184
2534
  };
2185
2535
  requestBody?: never;
2186
2536
  responses: {
2187
- /** @description Flow restored */
2537
+ /** @description Deployment details */
2188
2538
  200: {
2189
2539
  headers: {
2190
2540
  [name: string]: unknown;
2191
2541
  };
2192
2542
  content: {
2193
- 'application/json': components['schemas']['Flow'];
2543
+ 'application/json': components['schemas']['DeploymentDetailResponse'];
2194
2544
  };
2195
2545
  };
2196
2546
  /** @description Unauthorized */
@@ -2202,15 +2552,6 @@ interface paths {
2202
2552
  'application/json': components['schemas']['ErrorResponse'];
2203
2553
  };
2204
2554
  };
2205
- /** @description Forbidden */
2206
- 403: {
2207
- headers: {
2208
- [name: string]: unknown;
2209
- };
2210
- content: {
2211
- 'application/json': components['schemas']['ErrorResponse'];
2212
- };
2213
- };
2214
2555
  /** @description Not found */
2215
2556
  404: {
2216
2557
  headers: {
@@ -2222,39 +2563,36 @@ interface paths {
2222
2563
  };
2223
2564
  };
2224
2565
  };
2225
- delete?: never;
2226
- options?: never;
2227
- head?: never;
2228
- patch?: never;
2229
- trace?: never;
2230
- };
2231
- '/api/tokens': {
2232
- parameters: {
2233
- query?: never;
2234
- header?: never;
2235
- path?: never;
2236
- cookie?: never;
2237
- };
2566
+ put?: never;
2567
+ post?: never;
2238
2568
  /**
2239
- * List my tokens
2240
- * @description List all API tokens for the authenticated user. Returns summaries (no raw token values).
2569
+ * Delete deployment
2570
+ * @description Delete a deployment and its container. Requires owner role.
2241
2571
  */
2242
- get: {
2572
+ delete: {
2243
2573
  parameters: {
2244
2574
  query?: never;
2245
2575
  header?: never;
2246
- path?: never;
2576
+ path: {
2577
+ projectId: string;
2578
+ flowId: string;
2579
+ deploymentId: string;
2580
+ };
2247
2581
  cookie?: never;
2248
2582
  };
2249
2583
  requestBody?: never;
2250
2584
  responses: {
2251
- /** @description List of tokens */
2585
+ /** @description Deployment deleted */
2252
2586
  200: {
2253
2587
  headers: {
2254
2588
  [name: string]: unknown;
2255
2589
  };
2256
2590
  content: {
2257
- 'application/json': components['schemas']['ListApiTokensResponse'];
2591
+ 'application/json': {
2592
+ id: string;
2593
+ /** @enum {string} */
2594
+ status: 'deleted';
2595
+ };
2258
2596
  };
2259
2597
  };
2260
2598
  /** @description Unauthorized */
@@ -2266,46 +2604,8 @@ interface paths {
2266
2604
  'application/json': components['schemas']['ErrorResponse'];
2267
2605
  };
2268
2606
  };
2269
- };
2270
- };
2271
- put?: never;
2272
- /**
2273
- * Create token
2274
- * @description Create a new API token. The raw token is returned once and cannot be retrieved again.
2275
- */
2276
- post: {
2277
- parameters: {
2278
- query?: never;
2279
- header?: never;
2280
- path?: never;
2281
- cookie?: never;
2282
- };
2283
- requestBody?: {
2284
- content: {
2285
- 'application/json': components['schemas']['CreateApiTokenRequest'];
2286
- };
2287
- };
2288
- responses: {
2289
- /** @description Token created (raw token shown once) */
2290
- 201: {
2291
- headers: {
2292
- [name: string]: unknown;
2293
- };
2294
- content: {
2295
- 'application/json': components['schemas']['CreateApiTokenResponse'];
2296
- };
2297
- };
2298
- /** @description Validation error */
2299
- 400: {
2300
- headers: {
2301
- [name: string]: unknown;
2302
- };
2303
- content: {
2304
- 'application/json': components['schemas']['ErrorResponse'];
2305
- };
2306
- };
2307
- /** @description Unauthorized */
2308
- 401: {
2607
+ /** @description Forbidden */
2608
+ 403: {
2309
2609
  headers: {
2310
2610
  [name: string]: unknown;
2311
2611
  };
@@ -2313,8 +2613,8 @@ interface paths {
2313
2613
  'application/json': components['schemas']['ErrorResponse'];
2314
2614
  };
2315
2615
  };
2316
- /** @description Conflict */
2317
- 409: {
2616
+ /** @description Not found */
2617
+ 404: {
2318
2618
  headers: {
2319
2619
  [name: string]: unknown;
2320
2620
  };
@@ -2324,13 +2624,12 @@ interface paths {
2324
2624
  };
2325
2625
  };
2326
2626
  };
2327
- delete?: never;
2328
2627
  options?: never;
2329
2628
  head?: never;
2330
2629
  patch?: never;
2331
2630
  trace?: never;
2332
2631
  };
2333
- '/api/tokens/{tokenId}': {
2632
+ '/api/projects/{projectId}/flows/{flowId}/deploy/{deploymentId}/advance': {
2334
2633
  parameters: {
2335
2634
  query?: never;
2336
2635
  header?: never;
@@ -2339,28 +2638,44 @@ interface paths {
2339
2638
  };
2340
2639
  get?: never;
2341
2640
  put?: never;
2342
- post?: never;
2343
2641
  /**
2344
- * Revoke token
2345
- * @description Revoke an API token (soft delete via revokedAt timestamp).
2642
+ * Advance deployment
2643
+ * @description Advance the deployment state machine. Checks bundle/container status and transitions accordingly.
2346
2644
  */
2347
- delete: {
2645
+ post: {
2348
2646
  parameters: {
2349
2647
  query?: never;
2350
2648
  header?: never;
2351
2649
  path: {
2352
- tokenId: string;
2650
+ projectId: string;
2651
+ flowId: string;
2652
+ deploymentId: string;
2353
2653
  };
2354
2654
  cookie?: never;
2355
2655
  };
2356
2656
  requestBody?: never;
2357
2657
  responses: {
2358
- /** @description Token revoked */
2359
- 204: {
2658
+ /** @description Current deployment state after advancement */
2659
+ 200: {
2360
2660
  headers: {
2361
2661
  [name: string]: unknown;
2362
2662
  };
2363
- content?: never;
2663
+ content: {
2664
+ 'application/json': {
2665
+ id: string;
2666
+ flowId: string;
2667
+ /** @enum {string} */
2668
+ type: 'web' | 'server';
2669
+ status: string;
2670
+ containerUrl: string | null;
2671
+ publicUrl?: string | null;
2672
+ errorMessage: string | null;
2673
+ /** Format: date-time */
2674
+ createdAt: string;
2675
+ /** Format: date-time */
2676
+ updatedAt: string;
2677
+ };
2678
+ };
2364
2679
  };
2365
2680
  /** @description Unauthorized */
2366
2681
  401: {
@@ -2371,53 +2686,57 @@ interface paths {
2371
2686
  'application/json': components['schemas']['ErrorResponse'];
2372
2687
  };
2373
2688
  };
2689
+ /** @description Not found */
2690
+ 404: {
2691
+ headers: {
2692
+ [name: string]: unknown;
2693
+ };
2694
+ content: {
2695
+ 'application/json': components['schemas']['ErrorResponse'];
2696
+ };
2697
+ };
2374
2698
  };
2375
2699
  };
2700
+ delete?: never;
2376
2701
  options?: never;
2377
2702
  head?: never;
2378
2703
  patch?: never;
2379
2704
  trace?: never;
2380
2705
  };
2381
- '/api/bundle': {
2706
+ '/api/projects/{projectId}/flows/{flowId}/configs': {
2382
2707
  parameters: {
2383
2708
  query?: never;
2384
2709
  header?: never;
2385
2710
  path?: never;
2386
2711
  cookie?: never;
2387
2712
  };
2388
- get?: never;
2389
- put?: never;
2390
2713
  /**
2391
- * Bundle flow
2392
- * @description Bundle a walkerOS flow into a deployable JavaScript module.
2714
+ * List configs
2715
+ * @description List active named configs for a flow.
2393
2716
  */
2394
- post: {
2717
+ get: {
2395
2718
  parameters: {
2396
2719
  query?: never;
2397
2720
  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
- };
2721
+ path: {
2722
+ projectId: string;
2723
+ flowId: string;
2407
2724
  };
2725
+ cookie?: never;
2408
2726
  };
2727
+ requestBody?: never;
2409
2728
  responses: {
2410
- /** @description Bundled JavaScript module */
2729
+ /** @description List of configs */
2411
2730
  200: {
2412
2731
  headers: {
2413
2732
  [name: string]: unknown;
2414
2733
  };
2415
2734
  content: {
2416
- 'application/javascript': string;
2735
+ 'application/json': components['schemas']['ListConfigsResponse'];
2417
2736
  };
2418
2737
  };
2419
- /** @description Validation error */
2420
- 400: {
2738
+ /** @description Unauthorized */
2739
+ 401: {
2421
2740
  headers: {
2422
2741
  [name: string]: unknown;
2423
2742
  };
@@ -2425,8 +2744,8 @@ interface paths {
2425
2744
  'application/json': components['schemas']['ErrorResponse'];
2426
2745
  };
2427
2746
  };
2428
- /** @description Payload too large */
2429
- 413: {
2747
+ /** @description Not found */
2748
+ 404: {
2430
2749
  headers: {
2431
2750
  [name: string]: unknown;
2432
2751
  };
@@ -2436,13 +2755,15 @@ interface paths {
2436
2755
  };
2437
2756
  };
2438
2757
  };
2758
+ put?: never;
2759
+ post?: never;
2439
2760
  delete?: never;
2440
2761
  options?: never;
2441
2762
  head?: never;
2442
2763
  patch?: never;
2443
2764
  trace?: never;
2444
2765
  };
2445
- '/api/projects/{projectId}/flows/{flowId}/deploy': {
2766
+ '/api/projects/{projectId}/flows/{flowId}/configs/{configId}': {
2446
2767
  parameters: {
2447
2768
  query?: never;
2448
2769
  header?: never;
@@ -2450,8 +2771,8 @@ interface paths {
2450
2771
  cookie?: never;
2451
2772
  };
2452
2773
  /**
2453
- * Get latest deployment
2454
- * @description Get the latest deployment for a flow.
2774
+ * Get config
2775
+ * @description Get a single config with its latest deployment.
2455
2776
  */
2456
2777
  get: {
2457
2778
  parameters: {
@@ -2460,18 +2781,19 @@ interface paths {
2460
2781
  path: {
2461
2782
  projectId: string;
2462
2783
  flowId: string;
2784
+ configId: string;
2463
2785
  };
2464
2786
  cookie?: never;
2465
2787
  };
2466
2788
  requestBody?: never;
2467
2789
  responses: {
2468
- /** @description Latest deployment (or null) */
2790
+ /** @description Config details with deployment */
2469
2791
  200: {
2470
2792
  headers: {
2471
2793
  [name: string]: unknown;
2472
2794
  };
2473
2795
  content: {
2474
- 'application/json': components['schemas']['Deployment'] | null;
2796
+ 'application/json': components['schemas']['FlowConfigDetail'];
2475
2797
  };
2476
2798
  };
2477
2799
  /** @description Unauthorized */
@@ -2483,41 +2805,56 @@ interface paths {
2483
2805
  'application/json': components['schemas']['ErrorResponse'];
2484
2806
  };
2485
2807
  };
2808
+ /** @description Not found */
2809
+ 404: {
2810
+ headers: {
2811
+ [name: string]: unknown;
2812
+ };
2813
+ content: {
2814
+ 'application/json': components['schemas']['ErrorResponse'];
2815
+ };
2816
+ };
2486
2817
  };
2487
2818
  };
2488
2819
  put?: never;
2820
+ post?: never;
2821
+ delete?: never;
2822
+ options?: never;
2823
+ head?: never;
2824
+ patch?: never;
2825
+ trace?: never;
2826
+ };
2827
+ '/api/projects/{projectId}/flows/{flowId}/configs/{configId}/json': {
2828
+ parameters: {
2829
+ query?: never;
2830
+ header?: never;
2831
+ path?: never;
2832
+ cookie?: never;
2833
+ };
2489
2834
  /**
2490
- * Deploy flow
2491
- * @description Start a deployment for a flow. Auto-detects web or server from flow content.
2835
+ * Download config JSON
2836
+ * @description Download the named flow config as a self-contained Setup JSON file. Includes parent variables and definitions.
2492
2837
  */
2493
- post: {
2838
+ get: {
2494
2839
  parameters: {
2495
2840
  query?: never;
2496
2841
  header?: never;
2497
2842
  path: {
2498
2843
  projectId: string;
2499
2844
  flowId: string;
2845
+ configId: string;
2500
2846
  };
2501
2847
  cookie?: never;
2502
2848
  };
2503
2849
  requestBody?: never;
2504
2850
  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: {
2851
+ /** @description Flow Setup JSON file */
2852
+ 200: {
2516
2853
  headers: {
2517
2854
  [name: string]: unknown;
2518
2855
  };
2519
2856
  content: {
2520
- 'application/json': components['schemas']['ErrorResponse'];
2857
+ 'application/json': components['schemas']['FlowContent'];
2521
2858
  };
2522
2859
  };
2523
2860
  /** @description Unauthorized */
@@ -2540,46 +2877,44 @@ interface paths {
2540
2877
  };
2541
2878
  };
2542
2879
  };
2880
+ put?: never;
2881
+ post?: never;
2543
2882
  delete?: never;
2544
2883
  options?: never;
2545
2884
  head?: never;
2546
2885
  patch?: never;
2547
2886
  trace?: never;
2548
2887
  };
2549
- '/api/projects/{projectId}/flows/{flowId}/deploy/{deploymentId}/advance': {
2888
+ '/api/projects/{projectId}/flows/{flowId}/configs/{configId}/bundle': {
2550
2889
  parameters: {
2551
2890
  query?: never;
2552
2891
  header?: never;
2553
2892
  path?: never;
2554
2893
  cookie?: never;
2555
2894
  };
2556
- get?: never;
2557
- put?: never;
2558
2895
  /**
2559
- * Advance deployment
2560
- * @description Advance the deployment state machine. Poll until terminal status.
2896
+ * Download config bundle
2897
+ * @description Download the compiled JS/MJS for the config's latest deployment. Redirects to a presigned download URL.
2561
2898
  */
2562
- post: {
2899
+ get: {
2563
2900
  parameters: {
2564
2901
  query?: never;
2565
2902
  header?: never;
2566
2903
  path: {
2567
2904
  projectId: string;
2568
2905
  flowId: string;
2569
- deploymentId: string;
2906
+ configId: string;
2570
2907
  };
2571
2908
  cookie?: never;
2572
2909
  };
2573
2910
  requestBody?: never;
2574
2911
  responses: {
2575
- /** @description Current deployment state */
2576
- 200: {
2912
+ /** @description Redirect to presigned bundle URL */
2913
+ 302: {
2577
2914
  headers: {
2578
2915
  [name: string]: unknown;
2579
2916
  };
2580
- content: {
2581
- 'application/json': components['schemas']['Deployment'];
2582
- };
2917
+ content?: never;
2583
2918
  };
2584
2919
  /** @description Unauthorized */
2585
2920
  401: {
@@ -2599,45 +2934,56 @@ interface paths {
2599
2934
  'application/json': components['schemas']['ErrorResponse'];
2600
2935
  };
2601
2936
  };
2937
+ /** @description Service unavailable */
2938
+ 503: {
2939
+ headers: {
2940
+ [name: string]: unknown;
2941
+ };
2942
+ content: {
2943
+ 'application/json': components['schemas']['ErrorResponse'];
2944
+ };
2945
+ };
2602
2946
  };
2603
2947
  };
2948
+ put?: never;
2949
+ post?: never;
2604
2950
  delete?: never;
2605
2951
  options?: never;
2606
2952
  head?: never;
2607
2953
  patch?: never;
2608
2954
  trace?: never;
2609
2955
  };
2610
- '/api/projects/{projectId}/observe/ticket': {
2956
+ '/api/projects/{projectId}/flows/{flowId}/configs/{configId}/deploy': {
2611
2957
  parameters: {
2612
2958
  query?: never;
2613
2959
  header?: never;
2614
2960
  path?: never;
2615
2961
  cookie?: never;
2616
2962
  };
2617
- get?: never;
2618
- put?: never;
2619
2963
  /**
2620
- * Create SSE ticket
2621
- * @description Generate a one-time ticket for authenticating an SSE connection to the Observer service. Requires project membership.
2964
+ * Get latest config deployment
2965
+ * @description Get the latest deployment for a specific config.
2622
2966
  */
2623
- post: {
2967
+ get: {
2624
2968
  parameters: {
2625
2969
  query?: never;
2626
2970
  header?: never;
2627
2971
  path: {
2628
2972
  projectId: string;
2973
+ flowId: string;
2974
+ configId: string;
2629
2975
  };
2630
2976
  cookie?: never;
2631
2977
  };
2632
2978
  requestBody?: never;
2633
2979
  responses: {
2634
- /** @description Ticket generated */
2980
+ /** @description Latest deployment (or null) */
2635
2981
  200: {
2636
2982
  headers: {
2637
2983
  [name: string]: unknown;
2638
2984
  };
2639
2985
  content: {
2640
- 'application/json': components['schemas']['CreateTicketResponse'];
2986
+ 'application/json': components['schemas']['ConfigDeploymentResponse'];
2641
2987
  };
2642
2988
  };
2643
2989
  /** @description Unauthorized */
@@ -2660,24 +3006,10 @@ interface paths {
2660
3006
  };
2661
3007
  };
2662
3008
  };
2663
- delete?: never;
2664
- options?: never;
2665
- head?: never;
2666
- patch?: never;
2667
- trace?: never;
2668
- };
2669
- '/api/projects/{projectId}/observe/validate-ticket': {
2670
- parameters: {
2671
- query?: never;
2672
- header?: never;
2673
- path?: never;
2674
- cookie?: never;
2675
- };
2676
- get?: never;
2677
3009
  put?: never;
2678
3010
  /**
2679
- * Validate ticket
2680
- * @description Internal endpoint for the Observer service to validate and consume a ticket.
3011
+ * Deploy config
3012
+ * @description Start a deployment for a specific config. Detects platform from the config.
2681
3013
  */
2682
3014
  post: {
2683
3015
  parameters: {
@@ -2685,22 +3017,1032 @@ interface paths {
2685
3017
  header?: never;
2686
3018
  path: {
2687
3019
  projectId: string;
3020
+ flowId: string;
3021
+ configId: string;
2688
3022
  };
2689
3023
  cookie?: never;
2690
3024
  };
2691
- requestBody?: {
2692
- content: {
2693
- 'application/json': components['schemas']['ValidateTicketRequest'];
2694
- };
2695
- };
3025
+ requestBody?: never;
2696
3026
  responses: {
2697
- /** @description Ticket payload */
2698
- 200: {
3027
+ /** @description Deployment started */
3028
+ 201: {
2699
3029
  headers: {
2700
3030
  [name: string]: unknown;
2701
3031
  };
2702
3032
  content: {
2703
- 'application/json': components['schemas']['ValidateTicketResponse'];
3033
+ 'application/json': components['schemas']['DeployConfigResponse'];
3034
+ };
3035
+ };
3036
+ /** @description Unauthorized */
3037
+ 401: {
3038
+ headers: {
3039
+ [name: string]: unknown;
3040
+ };
3041
+ content: {
3042
+ 'application/json': components['schemas']['ErrorResponse'];
3043
+ };
3044
+ };
3045
+ /** @description Not found */
3046
+ 404: {
3047
+ headers: {
3048
+ [name: string]: unknown;
3049
+ };
3050
+ content: {
3051
+ 'application/json': components['schemas']['ErrorResponse'];
3052
+ };
3053
+ };
3054
+ /** @description Deployment already in progress */
3055
+ 409: {
3056
+ headers: {
3057
+ [name: string]: unknown;
3058
+ };
3059
+ content: {
3060
+ 'application/json': components['schemas']['ErrorResponse'];
3061
+ };
3062
+ };
3063
+ /** @description Config orphaned */
3064
+ 422: {
3065
+ headers: {
3066
+ [name: string]: unknown;
3067
+ };
3068
+ content: {
3069
+ 'application/json': components['schemas']['ErrorResponse'];
3070
+ };
3071
+ };
3072
+ /** @description Service unavailable */
3073
+ 503: {
3074
+ headers: {
3075
+ [name: string]: unknown;
3076
+ };
3077
+ content: {
3078
+ 'application/json': components['schemas']['ErrorResponse'];
3079
+ };
3080
+ };
3081
+ };
3082
+ };
3083
+ delete?: never;
3084
+ options?: never;
3085
+ head?: never;
3086
+ patch?: never;
3087
+ trace?: never;
3088
+ };
3089
+ '/api/projects/{projectId}/flows/{flowId}/configs/{configId}/deployments/{deploymentId}': {
3090
+ parameters: {
3091
+ query?: never;
3092
+ header?: never;
3093
+ path?: never;
3094
+ cookie?: never;
3095
+ };
3096
+ /**
3097
+ * Get config deployment detail
3098
+ * @description Get a specific deployment by ID, scoped to a config.
3099
+ */
3100
+ get: {
3101
+ parameters: {
3102
+ query?: never;
3103
+ header?: never;
3104
+ path: {
3105
+ projectId: string;
3106
+ flowId: string;
3107
+ configId: string;
3108
+ deploymentId: string;
3109
+ };
3110
+ cookie?: never;
3111
+ };
3112
+ requestBody?: never;
3113
+ responses: {
3114
+ /** @description Deployment details */
3115
+ 200: {
3116
+ headers: {
3117
+ [name: string]: unknown;
3118
+ };
3119
+ content: {
3120
+ 'application/json': components['schemas']['ConfigDeploymentDetailResponse'];
3121
+ };
3122
+ };
3123
+ /** @description Unauthorized */
3124
+ 401: {
3125
+ headers: {
3126
+ [name: string]: unknown;
3127
+ };
3128
+ content: {
3129
+ 'application/json': components['schemas']['ErrorResponse'];
3130
+ };
3131
+ };
3132
+ /** @description Not found */
3133
+ 404: {
3134
+ headers: {
3135
+ [name: string]: unknown;
3136
+ };
3137
+ content: {
3138
+ 'application/json': components['schemas']['ErrorResponse'];
3139
+ };
3140
+ };
3141
+ };
3142
+ };
3143
+ put?: never;
3144
+ post?: never;
3145
+ delete?: never;
3146
+ options?: never;
3147
+ head?: never;
3148
+ patch?: never;
3149
+ trace?: never;
3150
+ };
3151
+ '/api/projects/{projectId}/flows/{flowId}/configs/{configId}/deployments/{deploymentId}/advance': {
3152
+ parameters: {
3153
+ query?: never;
3154
+ header?: never;
3155
+ path?: never;
3156
+ cookie?: never;
3157
+ };
3158
+ get?: never;
3159
+ put?: never;
3160
+ /**
3161
+ * Advance config deployment
3162
+ * @description Advance the deployment state machine for a per-config deployment.
3163
+ */
3164
+ post: {
3165
+ parameters: {
3166
+ query?: never;
3167
+ header?: never;
3168
+ path: {
3169
+ projectId: string;
3170
+ flowId: string;
3171
+ configId: string;
3172
+ deploymentId: string;
3173
+ };
3174
+ cookie?: never;
3175
+ };
3176
+ requestBody?: never;
3177
+ responses: {
3178
+ /** @description Current deployment state after advancement */
3179
+ 200: {
3180
+ headers: {
3181
+ [name: string]: unknown;
3182
+ };
3183
+ content: {
3184
+ 'application/json': components['schemas']['AdvanceConfigDeploymentResponse'];
3185
+ };
3186
+ };
3187
+ /** @description Unauthorized */
3188
+ 401: {
3189
+ headers: {
3190
+ [name: string]: unknown;
3191
+ };
3192
+ content: {
3193
+ 'application/json': components['schemas']['ErrorResponse'];
3194
+ };
3195
+ };
3196
+ /** @description Not found */
3197
+ 404: {
3198
+ headers: {
3199
+ [name: string]: unknown;
3200
+ };
3201
+ content: {
3202
+ 'application/json': components['schemas']['ErrorResponse'];
3203
+ };
3204
+ };
3205
+ };
3206
+ };
3207
+ delete?: never;
3208
+ options?: never;
3209
+ head?: never;
3210
+ patch?: never;
3211
+ trace?: never;
3212
+ };
3213
+ '/api/projects/{projectId}/flows/{flowId}/versions': {
3214
+ parameters: {
3215
+ query?: never;
3216
+ header?: never;
3217
+ path?: never;
3218
+ cookie?: never;
3219
+ };
3220
+ /**
3221
+ * List versions
3222
+ * @description List all versions for a flow.
3223
+ */
3224
+ get: {
3225
+ parameters: {
3226
+ query?: never;
3227
+ header?: never;
3228
+ path: {
3229
+ projectId: string;
3230
+ flowId: string;
3231
+ };
3232
+ cookie?: never;
3233
+ };
3234
+ requestBody?: never;
3235
+ responses: {
3236
+ /** @description List of versions */
3237
+ 200: {
3238
+ headers: {
3239
+ [name: string]: unknown;
3240
+ };
3241
+ content: {
3242
+ 'application/json': components['schemas']['ListVersionsResponse'];
3243
+ };
3244
+ };
3245
+ /** @description Unauthorized */
3246
+ 401: {
3247
+ headers: {
3248
+ [name: string]: unknown;
3249
+ };
3250
+ content: {
3251
+ 'application/json': components['schemas']['ErrorResponse'];
3252
+ };
3253
+ };
3254
+ /** @description Not found */
3255
+ 404: {
3256
+ headers: {
3257
+ [name: string]: unknown;
3258
+ };
3259
+ content: {
3260
+ 'application/json': components['schemas']['ErrorResponse'];
3261
+ };
3262
+ };
3263
+ };
3264
+ };
3265
+ put?: never;
3266
+ post?: never;
3267
+ delete?: never;
3268
+ options?: never;
3269
+ head?: never;
3270
+ patch?: never;
3271
+ trace?: never;
3272
+ };
3273
+ '/api/projects/{projectId}/flows/{flowId}/versions/{versionNumber}': {
3274
+ parameters: {
3275
+ query?: never;
3276
+ header?: never;
3277
+ path?: never;
3278
+ cookie?: never;
3279
+ };
3280
+ /**
3281
+ * Get version
3282
+ * @description Get a specific version of a flow.
3283
+ */
3284
+ get: {
3285
+ parameters: {
3286
+ query?: never;
3287
+ header?: never;
3288
+ path: {
3289
+ projectId: string;
3290
+ flowId: string;
3291
+ versionNumber: number;
3292
+ };
3293
+ cookie?: never;
3294
+ };
3295
+ requestBody?: never;
3296
+ responses: {
3297
+ /** @description Version details with content */
3298
+ 200: {
3299
+ headers: {
3300
+ [name: string]: unknown;
3301
+ };
3302
+ content: {
3303
+ 'application/json': components['schemas']['GetVersionResponse'];
3304
+ };
3305
+ };
3306
+ /** @description Unauthorized */
3307
+ 401: {
3308
+ headers: {
3309
+ [name: string]: unknown;
3310
+ };
3311
+ content: {
3312
+ 'application/json': components['schemas']['ErrorResponse'];
3313
+ };
3314
+ };
3315
+ /** @description Not found */
3316
+ 404: {
3317
+ headers: {
3318
+ [name: string]: unknown;
3319
+ };
3320
+ content: {
3321
+ 'application/json': components['schemas']['ErrorResponse'];
3322
+ };
3323
+ };
3324
+ };
3325
+ };
3326
+ put?: never;
3327
+ post?: never;
3328
+ delete?: never;
3329
+ options?: never;
3330
+ head?: never;
3331
+ patch?: never;
3332
+ trace?: never;
3333
+ };
3334
+ '/api/projects/{projectId}/flows/{flowId}/versions/{versionNumber}/restore': {
3335
+ parameters: {
3336
+ query?: never;
3337
+ header?: never;
3338
+ path?: never;
3339
+ cookie?: never;
3340
+ };
3341
+ get?: never;
3342
+ put?: never;
3343
+ /**
3344
+ * Restore version
3345
+ * @description Restore a flow to a specific version. Creates a new version snapshot. Requires owner role.
3346
+ */
3347
+ post: {
3348
+ parameters: {
3349
+ query?: never;
3350
+ header?: never;
3351
+ path: {
3352
+ projectId: string;
3353
+ flowId: string;
3354
+ versionNumber: number;
3355
+ };
3356
+ cookie?: never;
3357
+ };
3358
+ requestBody?: never;
3359
+ responses: {
3360
+ /** @description Flow restored */
3361
+ 200: {
3362
+ headers: {
3363
+ [name: string]: unknown;
3364
+ };
3365
+ content: {
3366
+ 'application/json': components['schemas']['Flow'];
3367
+ };
3368
+ };
3369
+ /** @description Unauthorized */
3370
+ 401: {
3371
+ headers: {
3372
+ [name: string]: unknown;
3373
+ };
3374
+ content: {
3375
+ 'application/json': components['schemas']['ErrorResponse'];
3376
+ };
3377
+ };
3378
+ /** @description Forbidden */
3379
+ 403: {
3380
+ headers: {
3381
+ [name: string]: unknown;
3382
+ };
3383
+ content: {
3384
+ 'application/json': components['schemas']['ErrorResponse'];
3385
+ };
3386
+ };
3387
+ /** @description Not found */
3388
+ 404: {
3389
+ headers: {
3390
+ [name: string]: unknown;
3391
+ };
3392
+ content: {
3393
+ 'application/json': components['schemas']['ErrorResponse'];
3394
+ };
3395
+ };
3396
+ };
3397
+ };
3398
+ delete?: never;
3399
+ options?: never;
3400
+ head?: never;
3401
+ patch?: never;
3402
+ trace?: never;
3403
+ };
3404
+ '/api/tokens': {
3405
+ parameters: {
3406
+ query?: never;
3407
+ header?: never;
3408
+ path?: never;
3409
+ cookie?: never;
3410
+ };
3411
+ /**
3412
+ * List my tokens
3413
+ * @description List all API tokens for the authenticated user. Returns summaries (no raw token values).
3414
+ */
3415
+ get: {
3416
+ parameters: {
3417
+ query?: never;
3418
+ header?: never;
3419
+ path?: never;
3420
+ cookie?: never;
3421
+ };
3422
+ requestBody?: never;
3423
+ responses: {
3424
+ /** @description List of tokens */
3425
+ 200: {
3426
+ headers: {
3427
+ [name: string]: unknown;
3428
+ };
3429
+ content: {
3430
+ 'application/json': components['schemas']['ListApiTokensResponse'];
3431
+ };
3432
+ };
3433
+ /** @description Unauthorized */
3434
+ 401: {
3435
+ headers: {
3436
+ [name: string]: unknown;
3437
+ };
3438
+ content: {
3439
+ 'application/json': components['schemas']['ErrorResponse'];
3440
+ };
3441
+ };
3442
+ };
3443
+ };
3444
+ put?: never;
3445
+ /**
3446
+ * Create token
3447
+ * @description Create a new API token. The raw token is returned once and cannot be retrieved again.
3448
+ */
3449
+ post: {
3450
+ parameters: {
3451
+ query?: never;
3452
+ header?: never;
3453
+ path?: never;
3454
+ cookie?: never;
3455
+ };
3456
+ requestBody?: {
3457
+ content: {
3458
+ 'application/json': components['schemas']['CreateApiTokenRequest'];
3459
+ };
3460
+ };
3461
+ responses: {
3462
+ /** @description Token created (raw token shown once) */
3463
+ 201: {
3464
+ headers: {
3465
+ [name: string]: unknown;
3466
+ };
3467
+ content: {
3468
+ 'application/json': components['schemas']['CreateApiTokenResponse'];
3469
+ };
3470
+ };
3471
+ /** @description Validation error */
3472
+ 400: {
3473
+ headers: {
3474
+ [name: string]: unknown;
3475
+ };
3476
+ content: {
3477
+ 'application/json': components['schemas']['ErrorResponse'];
3478
+ };
3479
+ };
3480
+ /** @description Unauthorized */
3481
+ 401: {
3482
+ headers: {
3483
+ [name: string]: unknown;
3484
+ };
3485
+ content: {
3486
+ 'application/json': components['schemas']['ErrorResponse'];
3487
+ };
3488
+ };
3489
+ /** @description Conflict */
3490
+ 409: {
3491
+ headers: {
3492
+ [name: string]: unknown;
3493
+ };
3494
+ content: {
3495
+ 'application/json': components['schemas']['ErrorResponse'];
3496
+ };
3497
+ };
3498
+ };
3499
+ };
3500
+ delete?: never;
3501
+ options?: never;
3502
+ head?: never;
3503
+ patch?: never;
3504
+ trace?: never;
3505
+ };
3506
+ '/api/tokens/{tokenId}': {
3507
+ parameters: {
3508
+ query?: never;
3509
+ header?: never;
3510
+ path?: never;
3511
+ cookie?: never;
3512
+ };
3513
+ get?: never;
3514
+ put?: never;
3515
+ post?: never;
3516
+ /**
3517
+ * Revoke token
3518
+ * @description Revoke an API token (soft delete via revokedAt timestamp).
3519
+ */
3520
+ delete: {
3521
+ parameters: {
3522
+ query?: never;
3523
+ header?: never;
3524
+ path: {
3525
+ tokenId: string;
3526
+ };
3527
+ cookie?: never;
3528
+ };
3529
+ requestBody?: never;
3530
+ responses: {
3531
+ /** @description Token revoked */
3532
+ 204: {
3533
+ headers: {
3534
+ [name: string]: unknown;
3535
+ };
3536
+ content?: never;
3537
+ };
3538
+ /** @description Unauthorized */
3539
+ 401: {
3540
+ headers: {
3541
+ [name: string]: unknown;
3542
+ };
3543
+ content: {
3544
+ 'application/json': components['schemas']['ErrorResponse'];
3545
+ };
3546
+ };
3547
+ };
3548
+ };
3549
+ options?: never;
3550
+ head?: never;
3551
+ patch?: never;
3552
+ trace?: never;
3553
+ };
3554
+ '/api/bundle': {
3555
+ parameters: {
3556
+ query?: never;
3557
+ header?: never;
3558
+ path?: never;
3559
+ cookie?: never;
3560
+ };
3561
+ get?: never;
3562
+ put?: never;
3563
+ /**
3564
+ * Bundle flow
3565
+ * @description Bundle a walkerOS flow into a deployable JavaScript module.
3566
+ */
3567
+ post: {
3568
+ parameters: {
3569
+ query?: never;
3570
+ header?: never;
3571
+ path?: never;
3572
+ cookie?: never;
3573
+ };
3574
+ /** @description Flow content to bundle */
3575
+ requestBody?: {
3576
+ content: {
3577
+ 'application/json': {
3578
+ [key: string]: unknown;
3579
+ };
3580
+ };
3581
+ };
3582
+ responses: {
3583
+ /** @description Bundled JavaScript module */
3584
+ 200: {
3585
+ headers: {
3586
+ [name: string]: unknown;
3587
+ };
3588
+ content: {
3589
+ 'application/javascript': string;
3590
+ };
3591
+ };
3592
+ /** @description Validation error */
3593
+ 400: {
3594
+ headers: {
3595
+ [name: string]: unknown;
3596
+ };
3597
+ content: {
3598
+ 'application/json': components['schemas']['ErrorResponse'];
3599
+ };
3600
+ };
3601
+ /** @description Payload too large */
3602
+ 413: {
3603
+ headers: {
3604
+ [name: string]: unknown;
3605
+ };
3606
+ content: {
3607
+ 'application/json': components['schemas']['ErrorResponse'];
3608
+ };
3609
+ };
3610
+ };
3611
+ };
3612
+ delete?: never;
3613
+ options?: never;
3614
+ head?: never;
3615
+ patch?: never;
3616
+ trace?: never;
3617
+ };
3618
+ '/api/projects/{projectId}/flows/{flowId}/bundle': {
3619
+ parameters: {
3620
+ query?: never;
3621
+ header?: never;
3622
+ path?: never;
3623
+ cookie?: never;
3624
+ };
3625
+ get?: never;
3626
+ put?: never;
3627
+ /**
3628
+ * Trigger flow bundle
3629
+ * @description Start a bundle job for a project flow. For multi-config flows, specify the named flow via ?flow= query parameter.
3630
+ */
3631
+ post: {
3632
+ parameters: {
3633
+ query?: {
3634
+ /** @description Named flow to bundle (required for multi-config flows) */
3635
+ flow?: string;
3636
+ };
3637
+ header?: never;
3638
+ path: {
3639
+ projectId: string;
3640
+ flowId: string;
3641
+ };
3642
+ cookie?: never;
3643
+ };
3644
+ requestBody?: never;
3645
+ responses: {
3646
+ /** @description Bundle job started */
3647
+ 200: {
3648
+ headers: {
3649
+ [name: string]: unknown;
3650
+ };
3651
+ content: {
3652
+ 'application/json': components['schemas']['BundleJobResponse'];
3653
+ };
3654
+ };
3655
+ /** @description Unauthorized */
3656
+ 401: {
3657
+ headers: {
3658
+ [name: string]: unknown;
3659
+ };
3660
+ content: {
3661
+ 'application/json': components['schemas']['ErrorResponse'];
3662
+ };
3663
+ };
3664
+ /** @description Not found */
3665
+ 404: {
3666
+ headers: {
3667
+ [name: string]: unknown;
3668
+ };
3669
+ content: {
3670
+ 'application/json': components['schemas']['ErrorResponse'];
3671
+ };
3672
+ };
3673
+ /** @description Flow selection required for multi-config flows */
3674
+ 422: {
3675
+ headers: {
3676
+ [name: string]: unknown;
3677
+ };
3678
+ content: {
3679
+ 'application/json': components['schemas']['ErrorResponse'];
3680
+ };
3681
+ };
3682
+ /** @description Service unavailable */
3683
+ 503: {
3684
+ headers: {
3685
+ [name: string]: unknown;
3686
+ };
3687
+ content: {
3688
+ 'application/json': components['schemas']['ErrorResponse'];
3689
+ };
3690
+ };
3691
+ };
3692
+ };
3693
+ delete?: never;
3694
+ options?: never;
3695
+ head?: never;
3696
+ patch?: never;
3697
+ trace?: never;
3698
+ };
3699
+ '/api/projects/{projectId}/flows/{flowId}/bundle/stream': {
3700
+ parameters: {
3701
+ query?: never;
3702
+ header?: never;
3703
+ path?: never;
3704
+ cookie?: never;
3705
+ };
3706
+ /**
3707
+ * Stream bundle job status (SSE)
3708
+ * @description Stream bundle job progress via Server-Sent Events.
3709
+ */
3710
+ get: {
3711
+ parameters: {
3712
+ query: {
3713
+ jobId: string;
3714
+ };
3715
+ header?: never;
3716
+ path: {
3717
+ projectId: string;
3718
+ flowId: string;
3719
+ };
3720
+ cookie?: never;
3721
+ };
3722
+ requestBody?: never;
3723
+ responses: {
3724
+ /** @description SSE event stream */
3725
+ 200: {
3726
+ headers: {
3727
+ [name: string]: unknown;
3728
+ };
3729
+ content?: never;
3730
+ };
3731
+ /** @description Unauthorized */
3732
+ 401: {
3733
+ headers: {
3734
+ [name: string]: unknown;
3735
+ };
3736
+ content: {
3737
+ 'application/json': components['schemas']['ErrorResponse'];
3738
+ };
3739
+ };
3740
+ };
3741
+ };
3742
+ put?: never;
3743
+ post?: never;
3744
+ delete?: never;
3745
+ options?: never;
3746
+ head?: never;
3747
+ patch?: never;
3748
+ trace?: never;
3749
+ };
3750
+ '/api/projects/{projectId}/flows/{flowId}/publish': {
3751
+ parameters: {
3752
+ query?: never;
3753
+ header?: never;
3754
+ path?: never;
3755
+ cookie?: never;
3756
+ };
3757
+ /**
3758
+ * Get publish status
3759
+ * @description Get the current publish status for a flow (CDN deployment).
3760
+ */
3761
+ get: {
3762
+ parameters: {
3763
+ query?: never;
3764
+ header?: never;
3765
+ path: {
3766
+ projectId: string;
3767
+ flowId: string;
3768
+ };
3769
+ cookie?: never;
3770
+ };
3771
+ requestBody?: never;
3772
+ responses: {
3773
+ /** @description Publish status */
3774
+ 200: {
3775
+ headers: {
3776
+ [name: string]: unknown;
3777
+ };
3778
+ content?: never;
3779
+ };
3780
+ /** @description Unauthorized */
3781
+ 401: {
3782
+ headers: {
3783
+ [name: string]: unknown;
3784
+ };
3785
+ content: {
3786
+ 'application/json': components['schemas']['ErrorResponse'];
3787
+ };
3788
+ };
3789
+ /** @description Not found */
3790
+ 404: {
3791
+ headers: {
3792
+ [name: string]: unknown;
3793
+ };
3794
+ content: {
3795
+ 'application/json': components['schemas']['ErrorResponse'];
3796
+ };
3797
+ };
3798
+ };
3799
+ };
3800
+ put?: never;
3801
+ /**
3802
+ * Publish flow to CDN
3803
+ * @description Publish a bundled flow to the CDN for client-side loading.
3804
+ */
3805
+ post: {
3806
+ parameters: {
3807
+ query?: never;
3808
+ header?: never;
3809
+ path: {
3810
+ projectId: string;
3811
+ flowId: string;
3812
+ };
3813
+ cookie?: never;
3814
+ };
3815
+ requestBody?: never;
3816
+ responses: {
3817
+ /** @description Flow published */
3818
+ 200: {
3819
+ headers: {
3820
+ [name: string]: unknown;
3821
+ };
3822
+ content?: never;
3823
+ };
3824
+ /** @description Unauthorized */
3825
+ 401: {
3826
+ headers: {
3827
+ [name: string]: unknown;
3828
+ };
3829
+ content: {
3830
+ 'application/json': components['schemas']['ErrorResponse'];
3831
+ };
3832
+ };
3833
+ /** @description Not found */
3834
+ 404: {
3835
+ headers: {
3836
+ [name: string]: unknown;
3837
+ };
3838
+ content: {
3839
+ 'application/json': components['schemas']['ErrorResponse'];
3840
+ };
3841
+ };
3842
+ };
3843
+ };
3844
+ delete?: never;
3845
+ options?: never;
3846
+ head?: never;
3847
+ patch?: never;
3848
+ trace?: never;
3849
+ };
3850
+ '/api/projects/{projectId}/deployments/latest': {
3851
+ parameters: {
3852
+ query?: never;
3853
+ header?: never;
3854
+ path?: never;
3855
+ cookie?: never;
3856
+ };
3857
+ /**
3858
+ * List latest deployments
3859
+ * @description List the latest deployment for each flow in the project.
3860
+ */
3861
+ get: {
3862
+ parameters: {
3863
+ query?: never;
3864
+ header?: never;
3865
+ path: {
3866
+ projectId: string;
3867
+ };
3868
+ cookie?: never;
3869
+ };
3870
+ requestBody?: never;
3871
+ responses: {
3872
+ /** @description Latest deployment per flow */
3873
+ 200: {
3874
+ headers: {
3875
+ [name: string]: unknown;
3876
+ };
3877
+ content: {
3878
+ 'application/json': components['schemas']['LatestDeploymentsByFlow'];
3879
+ };
3880
+ };
3881
+ /** @description Unauthorized */
3882
+ 401: {
3883
+ headers: {
3884
+ [name: string]: unknown;
3885
+ };
3886
+ content: {
3887
+ 'application/json': components['schemas']['ErrorResponse'];
3888
+ };
3889
+ };
3890
+ };
3891
+ };
3892
+ put?: never;
3893
+ post?: never;
3894
+ delete?: never;
3895
+ options?: never;
3896
+ head?: never;
3897
+ patch?: never;
3898
+ trace?: never;
3899
+ };
3900
+ '/api/projects/{projectId}/runtimes/register': {
3901
+ parameters: {
3902
+ query?: never;
3903
+ header?: never;
3904
+ path?: never;
3905
+ cookie?: never;
3906
+ };
3907
+ get?: never;
3908
+ put?: never;
3909
+ /**
3910
+ * Register runtime
3911
+ * @description Register a server-side runtime container and get a presigned bundle URL.
3912
+ */
3913
+ post: {
3914
+ parameters: {
3915
+ query?: never;
3916
+ header?: never;
3917
+ path: {
3918
+ projectId: string;
3919
+ };
3920
+ cookie?: never;
3921
+ };
3922
+ requestBody?: {
3923
+ content: {
3924
+ 'application/json': components['schemas']['RegisterRuntimeRequest'];
3925
+ };
3926
+ };
3927
+ responses: {
3928
+ /** @description Presigned bundle URL */
3929
+ 200: {
3930
+ headers: {
3931
+ [name: string]: unknown;
3932
+ };
3933
+ content?: never;
3934
+ };
3935
+ /** @description Unauthorized */
3936
+ 401: {
3937
+ headers: {
3938
+ [name: string]: unknown;
3939
+ };
3940
+ content: {
3941
+ 'application/json': components['schemas']['ErrorResponse'];
3942
+ };
3943
+ };
3944
+ };
3945
+ };
3946
+ delete?: never;
3947
+ options?: never;
3948
+ head?: never;
3949
+ patch?: never;
3950
+ trace?: never;
3951
+ };
3952
+ '/api/projects/{projectId}/observe/ticket': {
3953
+ parameters: {
3954
+ query?: never;
3955
+ header?: never;
3956
+ path?: never;
3957
+ cookie?: never;
3958
+ };
3959
+ get?: never;
3960
+ put?: never;
3961
+ /**
3962
+ * Create SSE ticket
3963
+ * @description Generate a one-time ticket for authenticating an SSE connection to the Observer service. Requires project membership.
3964
+ */
3965
+ post: {
3966
+ parameters: {
3967
+ query?: never;
3968
+ header?: never;
3969
+ path: {
3970
+ projectId: string;
3971
+ };
3972
+ cookie?: never;
3973
+ };
3974
+ requestBody?: never;
3975
+ responses: {
3976
+ /** @description Ticket generated */
3977
+ 200: {
3978
+ headers: {
3979
+ [name: string]: unknown;
3980
+ };
3981
+ content: {
3982
+ 'application/json': components['schemas']['ObserveTicketResponse'];
3983
+ };
3984
+ };
3985
+ /** @description Unauthorized */
3986
+ 401: {
3987
+ headers: {
3988
+ [name: string]: unknown;
3989
+ };
3990
+ content: {
3991
+ 'application/json': components['schemas']['ErrorResponse'];
3992
+ };
3993
+ };
3994
+ /** @description Not found */
3995
+ 404: {
3996
+ headers: {
3997
+ [name: string]: unknown;
3998
+ };
3999
+ content: {
4000
+ 'application/json': components['schemas']['ErrorResponse'];
4001
+ };
4002
+ };
4003
+ };
4004
+ };
4005
+ delete?: never;
4006
+ options?: never;
4007
+ head?: never;
4008
+ patch?: never;
4009
+ trace?: never;
4010
+ };
4011
+ '/api/projects/{projectId}/observe/validate-ticket': {
4012
+ parameters: {
4013
+ query?: never;
4014
+ header?: never;
4015
+ path?: never;
4016
+ cookie?: never;
4017
+ };
4018
+ get?: never;
4019
+ put?: never;
4020
+ /**
4021
+ * Validate ticket
4022
+ * @description Internal endpoint for the Observer service to validate and consume a ticket.
4023
+ */
4024
+ post: {
4025
+ parameters: {
4026
+ query?: never;
4027
+ header?: never;
4028
+ path: {
4029
+ projectId: string;
4030
+ };
4031
+ cookie?: never;
4032
+ };
4033
+ requestBody?: {
4034
+ content: {
4035
+ 'application/json': components['schemas']['ValidateTicketRequest'];
4036
+ };
4037
+ };
4038
+ responses: {
4039
+ /** @description Ticket payload */
4040
+ 200: {
4041
+ headers: {
4042
+ [name: string]: unknown;
4043
+ };
4044
+ content: {
4045
+ 'application/json': components['schemas']['ValidateTicketResponse'];
2704
4046
  };
2705
4047
  };
2706
4048
  /** @description Validation error */
@@ -2972,7 +4314,7 @@ interface components {
2972
4314
  };
2973
4315
  FlowContent: {
2974
4316
  /** @enum {number} */
2975
- version: 1;
4317
+ version: 2;
2976
4318
  $schema?: string;
2977
4319
  include?: string[];
2978
4320
  variables?: {
@@ -2984,13 +4326,195 @@ interface components {
2984
4326
  flows?: {
2985
4327
  [key: string]: unknown;
2986
4328
  };
4329
+ contract?: {
4330
+ [key: string]: unknown;
4331
+ };
2987
4332
  };
2988
4333
  Flow: {
2989
4334
  /** @example flow_a1b2c3d4 */
2990
4335
  id: string;
2991
- /** @example my-website-flow */
4336
+ /** @example my-website-flow */
4337
+ name: string;
4338
+ content: components['schemas']['FlowContent'];
4339
+ configs?: components['schemas']['FlowConfigSummary'][];
4340
+ /**
4341
+ * Format: date-time
4342
+ * @example 2026-01-26T14:30:00.000Z
4343
+ */
4344
+ createdAt: string;
4345
+ /**
4346
+ * Format: date-time
4347
+ * @example 2026-01-26T14:30:00.000Z
4348
+ */
4349
+ updatedAt: string;
4350
+ /** Format: date-time */
4351
+ deletedAt?: string | null;
4352
+ };
4353
+ FlowConfigSummary: {
4354
+ /** @example cfg_a1b2c3d4 */
4355
+ id: string;
4356
+ name: string;
4357
+ /**
4358
+ * @example web
4359
+ * @enum {string}
4360
+ */
4361
+ platform: 'web' | 'server';
4362
+ /**
4363
+ * Format: date-time
4364
+ * @example 2026-01-26T14:30:00.000Z
4365
+ */
4366
+ createdAt: string;
4367
+ /**
4368
+ * Format: date-time
4369
+ * @example 2026-01-26T14:30:00.000Z
4370
+ */
4371
+ updatedAt: string;
4372
+ };
4373
+ FlowSummary: {
4374
+ /** @example flow_a1b2c3d4 */
4375
+ id: string;
4376
+ /** @example my-website-flow */
4377
+ name: string;
4378
+ summary?: string;
4379
+ configs?: components['schemas']['FlowConfigListItem'][];
4380
+ /**
4381
+ * Format: date-time
4382
+ * @example 2026-01-26T14:30:00.000Z
4383
+ */
4384
+ createdAt: string;
4385
+ /**
4386
+ * Format: date-time
4387
+ * @example 2026-01-26T14:30:00.000Z
4388
+ */
4389
+ updatedAt: string;
4390
+ /** Format: date-time */
4391
+ deletedAt: string | null;
4392
+ };
4393
+ FlowConfigListItem: {
4394
+ /** @example cfg_a1b2c3d4 */
4395
+ id: string;
4396
+ name: string;
4397
+ /**
4398
+ * @example web
4399
+ * @enum {string}
4400
+ */
4401
+ platform: 'web' | 'server';
4402
+ deploymentStatus: string | null;
4403
+ deploymentUrl: string | null;
4404
+ };
4405
+ Version: {
4406
+ /** @example 1 */
4407
+ version: number;
4408
+ /**
4409
+ * Format: date-time
4410
+ * @example 2026-01-26T14:30:00.000Z
4411
+ */
4412
+ createdAt: string;
4413
+ /**
4414
+ * @example user
4415
+ * @enum {string}
4416
+ */
4417
+ createdBy: 'user' | 'auto_save' | 'restore';
4418
+ /** @example sha256:abc123... */
4419
+ contentHash?: string;
4420
+ };
4421
+ Project: {
4422
+ /** @example proj_x7y8z9 */
4423
+ id: string;
4424
+ /** @example My Website */
4425
+ name: string;
4426
+ /**
4427
+ * @example owner
4428
+ * @enum {string}
4429
+ */
4430
+ role: 'owner' | 'admin' | 'member' | 'deployer' | 'viewer';
4431
+ /**
4432
+ * Format: date-time
4433
+ * @example 2026-01-26T14:30:00.000Z
4434
+ */
4435
+ createdAt: string;
4436
+ /**
4437
+ * Format: date-time
4438
+ * @example 2026-01-26T14:30:00.000Z
4439
+ */
4440
+ updatedAt: string;
4441
+ };
4442
+ Member: {
4443
+ userId: string;
4444
+ /** Format: email */
4445
+ email: string;
4446
+ /** @enum {string} */
4447
+ role: 'owner' | 'admin' | 'member' | 'deployer' | 'viewer';
4448
+ /**
4449
+ * Format: date-time
4450
+ * @example 2026-01-26T14:30:00.000Z
4451
+ */
4452
+ createdAt: string;
4453
+ };
4454
+ ApiTokenSummary: {
4455
+ /** @example tok_a1b2c3d4 */
4456
+ id: string;
4457
+ /** @example CI Pipeline */
4458
+ name: string;
4459
+ /** @example sk-walkeros-abcd */
4460
+ prefix: string;
4461
+ /** @example manual */
4462
+ origin: string;
4463
+ /** @example null */
4464
+ projectId: string | null;
4465
+ /** @example null */
4466
+ scopes: string[] | null;
4467
+ /**
4468
+ * Format: date-time
4469
+ * @example 2026-01-26T14:30:00.000Z
4470
+ */
4471
+ createdAt: string;
4472
+ /**
4473
+ * Format: date-time
4474
+ * @example 2026-01-26T14:30:00.000Z
4475
+ */
4476
+ lastUsedAt: string | null;
4477
+ /**
4478
+ * Format: date-time
4479
+ * @example 2026-01-26T14:30:00.000Z
4480
+ */
4481
+ expiresAt: string | null;
4482
+ /**
4483
+ * Format: date-time
4484
+ * @example 2026-01-26T14:30:00.000Z
4485
+ */
4486
+ revokedAt: string | null;
4487
+ };
4488
+ FlowConfigDetail: {
4489
+ /** @example cfg_a1b2c3d4 */
4490
+ id: string;
2992
4491
  name: string;
2993
- content: components['schemas']['FlowContent'];
4492
+ /**
4493
+ * @example web
4494
+ * @enum {string}
4495
+ */
4496
+ platform: 'web' | 'server';
4497
+ config: {
4498
+ [key: string]: unknown;
4499
+ };
4500
+ deployment?: {
4501
+ id: string;
4502
+ status: string;
4503
+ type: string;
4504
+ containerUrl?: string | null;
4505
+ publicUrl?: string | null;
4506
+ errorMessage?: string | null;
4507
+ /**
4508
+ * Format: date-time
4509
+ * @example 2026-01-26T14:30:00.000Z
4510
+ */
4511
+ createdAt: string;
4512
+ /**
4513
+ * Format: date-time
4514
+ * @example 2026-01-26T14:30:00.000Z
4515
+ */
4516
+ updatedAt: string;
4517
+ } | null;
2994
4518
  /**
2995
4519
  * Format: date-time
2996
4520
  * @example 2026-01-26T14:30:00.000Z
@@ -3001,14 +4525,20 @@ interface components {
3001
4525
  * @example 2026-01-26T14:30:00.000Z
3002
4526
  */
3003
4527
  updatedAt: string;
3004
- /** Format: date-time */
3005
- deletedAt?: string | null;
3006
4528
  };
3007
- FlowSummary: {
4529
+ DeployConfigResponse: {
4530
+ deploymentId: string;
4531
+ /** @example cfg_a1b2c3d4 */
4532
+ configId: string;
4533
+ status: string;
4534
+ };
4535
+ FlowDetailResponse: {
3008
4536
  /** @example flow_a1b2c3d4 */
3009
4537
  id: string;
3010
4538
  /** @example my-website-flow */
3011
4539
  name: string;
4540
+ content: components['schemas']['FlowContent'];
4541
+ configs?: components['schemas']['FlowConfigEnriched'][];
3012
4542
  /**
3013
4543
  * Format: date-time
3014
4544
  * @example 2026-01-26T14:30:00.000Z
@@ -3022,32 +4552,42 @@ interface components {
3022
4552
  /** Format: date-time */
3023
4553
  deletedAt: string | null;
3024
4554
  };
3025
- Version: {
3026
- /** @example 1 */
3027
- version: number;
4555
+ FlowConfigEnriched: {
4556
+ id: string;
4557
+ name: string;
4558
+ /** @enum {string} */
4559
+ platform: 'web' | 'server';
4560
+ deployment: {
4561
+ id: string;
4562
+ slug: string;
4563
+ status: string;
4564
+ type: string;
4565
+ target: string | null;
4566
+ containerUrl: string | null;
4567
+ /**
4568
+ * Format: date-time
4569
+ * @example 2026-01-26T14:30:00.000Z
4570
+ */
4571
+ createdAt: string;
4572
+ updatedAt: string | null;
4573
+ } | null;
3028
4574
  /**
3029
4575
  * Format: date-time
3030
4576
  * @example 2026-01-26T14:30:00.000Z
3031
4577
  */
3032
4578
  createdAt: string;
3033
4579
  /**
3034
- * @example user
3035
- * @enum {string}
4580
+ * Format: date-time
4581
+ * @example 2026-01-26T14:30:00.000Z
3036
4582
  */
3037
- createdBy: 'user' | 'auto_save' | 'restore';
3038
- /** @example sha256:abc123... */
3039
- contentHash?: string;
4583
+ updatedAt: string;
3040
4584
  };
3041
- Project: {
3042
- /** @example proj_x7y8z9 */
4585
+ FlowUpdateResponse: {
4586
+ /** @example flow_a1b2c3d4 */
3043
4587
  id: string;
3044
- /** @example My Website */
4588
+ /** @example my-website-flow */
3045
4589
  name: string;
3046
- /**
3047
- * @example owner
3048
- * @enum {string}
3049
- */
3050
- role: 'owner' | 'member';
4590
+ content: components['schemas']['FlowContent'];
3051
4591
  /**
3052
4592
  * Format: date-time
3053
4593
  * @example 2026-01-26T14:30:00.000Z
@@ -3059,49 +4599,254 @@ interface components {
3059
4599
  */
3060
4600
  updatedAt: string;
3061
4601
  };
3062
- Member: {
3063
- userId: string;
3064
- /** Format: email */
3065
- email: string;
3066
- /** @enum {string} */
3067
- role: 'owner' | 'member';
4602
+ CreateProjectResponse: {
4603
+ /** @example proj_x7y8z9 */
4604
+ id: string;
4605
+ name: string;
3068
4606
  /**
3069
4607
  * Format: date-time
3070
4608
  * @example 2026-01-26T14:30:00.000Z
3071
4609
  */
3072
4610
  createdAt: string;
3073
4611
  };
3074
- ApiTokenSummary: {
3075
- /** @example tok_a1b2c3d4 */
4612
+ DeploymentSummary: {
4613
+ /** @example dep_a1b2c3d4 */
3076
4614
  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
4615
  /**
3086
- * Format: date-time
3087
- * @example 2026-01-26T14:30:00.000Z
4616
+ * @example web
4617
+ * @enum {string}
4618
+ */
4619
+ type: 'web' | 'server';
4620
+ /** @example k7m2x9p4q1w8 */
4621
+ slug: string;
4622
+ target: string | null;
4623
+ label: string | null;
4624
+ /**
4625
+ * @example cloud
4626
+ * @enum {string}
4627
+ */
4628
+ origin: 'cloud' | 'self-hosted';
4629
+ /**
4630
+ * @example active
4631
+ * @enum {string}
3088
4632
  */
4633
+ status:
4634
+ | 'idle'
4635
+ | 'deploying'
4636
+ | 'published'
4637
+ | 'active'
4638
+ | 'stopped'
4639
+ | 'failed';
4640
+ currentVersionNumber: number | null;
4641
+ url: string | null;
4642
+ /** Format: date-time */
3089
4643
  createdAt: string;
4644
+ /** Format: date-time */
4645
+ updatedAt: string;
4646
+ usageSummary?: {
4647
+ eventsIn24h: number;
4648
+ healthy: boolean;
4649
+ };
4650
+ };
4651
+ DeploymentDetailResponse: {
4652
+ /** @example dep_a1b2c3d4 */
4653
+ id: string;
3090
4654
  /**
3091
- * Format: date-time
3092
- * @example 2026-01-26T14:30:00.000Z
4655
+ * @example web
4656
+ * @enum {string}
3093
4657
  */
3094
- lastUsedAt: string | null;
4658
+ type: 'web' | 'server';
4659
+ /** @example k7m2x9p4q1w8 */
4660
+ slug: string;
4661
+ target: string | null;
4662
+ label: string | null;
3095
4663
  /**
3096
- * Format: date-time
3097
- * @example 2026-01-26T14:30:00.000Z
4664
+ * @example cloud
4665
+ * @enum {string}
3098
4666
  */
3099
- expiresAt: string | null;
4667
+ origin: 'cloud' | 'self-hosted';
3100
4668
  /**
3101
- * Format: date-time
3102
- * @example 2026-01-26T14:30:00.000Z
4669
+ * @example active
4670
+ * @enum {string}
3103
4671
  */
3104
- revokedAt: string | null;
4672
+ status:
4673
+ | 'idle'
4674
+ | 'deploying'
4675
+ | 'published'
4676
+ | 'active'
4677
+ | 'stopped'
4678
+ | 'failed';
4679
+ currentVersion: components['schemas']['DeploymentVersionDetail'];
4680
+ url: string | null;
4681
+ selfHosted: {
4682
+ /** Format: date-time */
4683
+ lastHeartbeatAt: string;
4684
+ instanceId: string | null;
4685
+ cliVersion: string | null;
4686
+ healthy: boolean;
4687
+ } | null;
4688
+ /** Format: date-time */
4689
+ createdAt: string;
4690
+ /** Format: date-time */
4691
+ updatedAt: string;
4692
+ };
4693
+ DeploymentVersionDetail: {
4694
+ number: number;
4695
+ status: string;
4696
+ source: {
4697
+ type: string;
4698
+ flowId?: string;
4699
+ flowConfigId?: string;
4700
+ configHash?: string;
4701
+ };
4702
+ /** Format: date-time */
4703
+ publishedAt: string;
4704
+ publishedBy: string | null;
4705
+ } | null;
4706
+ CreateDeploymentResponse: {
4707
+ /** @example dep_a1b2c3d4 */
4708
+ id: string;
4709
+ /**
4710
+ * @example web
4711
+ * @enum {string}
4712
+ */
4713
+ type: 'web' | 'server';
4714
+ /** @example k7m2x9p4q1w8 */
4715
+ slug: string;
4716
+ target: string | null;
4717
+ label: string | null;
4718
+ /**
4719
+ * @example cloud
4720
+ * @enum {string}
4721
+ */
4722
+ origin: 'cloud' | 'self-hosted';
4723
+ /**
4724
+ * @example active
4725
+ * @enum {string}
4726
+ */
4727
+ status:
4728
+ | 'idle'
4729
+ | 'deploying'
4730
+ | 'published'
4731
+ | 'active'
4732
+ | 'stopped'
4733
+ | 'failed';
4734
+ currentVersionNumber: number | null;
4735
+ url: string | null;
4736
+ /** Format: date-time */
4737
+ createdAt: string;
4738
+ /** Format: date-time */
4739
+ updatedAt: string;
4740
+ usageSummary?: {
4741
+ eventsIn24h: number;
4742
+ healthy: boolean;
4743
+ };
4744
+ };
4745
+ ListDeploymentsResponse: {
4746
+ deployments: components['schemas']['DeploymentSummary'][];
4747
+ total: number;
4748
+ limit: number;
4749
+ offset: number;
4750
+ };
4751
+ UpdateDeploymentResponse: {
4752
+ /** @example dep_a1b2c3d4 */
4753
+ id: string;
4754
+ /**
4755
+ * @example web
4756
+ * @enum {string}
4757
+ */
4758
+ type: 'web' | 'server';
4759
+ /** @example k7m2x9p4q1w8 */
4760
+ slug: string;
4761
+ target: string | null;
4762
+ label: string | null;
4763
+ /**
4764
+ * @example cloud
4765
+ * @enum {string}
4766
+ */
4767
+ origin: 'cloud' | 'self-hosted';
4768
+ /**
4769
+ * @example active
4770
+ * @enum {string}
4771
+ */
4772
+ status:
4773
+ | 'idle'
4774
+ | 'deploying'
4775
+ | 'published'
4776
+ | 'active'
4777
+ | 'stopped'
4778
+ | 'failed';
4779
+ /** Format: date-time */
4780
+ createdAt: string;
4781
+ /** Format: date-time */
4782
+ updatedAt: string;
4783
+ };
4784
+ LatestDeploymentsByFlow: {
4785
+ [key: string]: {
4786
+ id: string;
4787
+ flowId: string;
4788
+ slug: string;
4789
+ type: string;
4790
+ status: string;
4791
+ target: string | null;
4792
+ containerUrl: string | null;
4793
+ createdAt: string;
4794
+ };
4795
+ };
4796
+ PublishVersionResponse: {
4797
+ versionNumber: number;
4798
+ versionId: string;
4799
+ /** @example dep_a1b2c3d4 */
4800
+ deploymentId: string;
4801
+ /** @enum {string} */
4802
+ status: 'deploying';
4803
+ source:
4804
+ | {
4805
+ /** @enum {string} */
4806
+ type: 'flow';
4807
+ flowId: string;
4808
+ flowConfigName: string;
4809
+ }
4810
+ | {
4811
+ /** @enum {string} */
4812
+ type: 'config';
4813
+ };
4814
+ /** Format: date-time */
4815
+ createdAt: string;
4816
+ };
4817
+ ListDeploymentVersionsResponse: {
4818
+ versions: {
4819
+ number: number;
4820
+ status: string;
4821
+ source: {
4822
+ type: string;
4823
+ flowId?: string;
4824
+ flowConfigId?: string;
4825
+ configHash?: string;
4826
+ };
4827
+ bundlePath: string | null;
4828
+ /** Format: date-time */
4829
+ publishedAt: string;
4830
+ publishedBy: string | null;
4831
+ }[];
4832
+ total: number;
4833
+ limit: number;
4834
+ offset: number;
4835
+ };
4836
+ HeartbeatResponse: {
4837
+ /** @enum {boolean} */
4838
+ ack: true;
4839
+ /** @example dep_a1b2c3d4 */
4840
+ deploymentId: string;
4841
+ /** @enum {string} */
4842
+ action: 'none' | 'stop' | 'update';
4843
+ versionNumber?: number;
4844
+ bundleUrl?: string;
4845
+ };
4846
+ ObserveTicketResponse: {
4847
+ ticket: string;
4848
+ /** Format: uri */
4849
+ observerUrl: string;
3105
4850
  };
3106
4851
  MagicLinkResponse: {
3107
4852
  /** @example true */
@@ -3115,10 +4860,7 @@ interface components {
3115
4860
  * @example user@example.com
3116
4861
  */
3117
4862
  email: string;
3118
- /**
3119
- * Format: uri
3120
- * @example /dashboard
3121
- */
4863
+ /** @example /dashboard */
3122
4864
  redirect_to?: string;
3123
4865
  };
3124
4866
  WhoamiResponse: {
@@ -3132,6 +4874,39 @@ interface components {
3132
4874
  /** @example null */
3133
4875
  projectId: string | null;
3134
4876
  };
4877
+ ListSessionsResponse: {
4878
+ sessions: {
4879
+ id: string;
4880
+ /** Format: date-time */
4881
+ createdAt: string;
4882
+ /** Format: date-time */
4883
+ expiresAt: string;
4884
+ /** Format: date-time */
4885
+ lastTouchedAt: string;
4886
+ isCurrent: boolean;
4887
+ }[];
4888
+ };
4889
+ DeviceCodeResponse: {
4890
+ deviceCode: string;
4891
+ userCode: string;
4892
+ expiresIn: number;
4893
+ interval: number;
4894
+ };
4895
+ ApproveDeviceResponse: {
4896
+ success: boolean;
4897
+ };
4898
+ ApproveDeviceRequest: {
4899
+ userCode: string;
4900
+ };
4901
+ DeviceTokenResponse: {
4902
+ token: string;
4903
+ email: string;
4904
+ userId: string;
4905
+ };
4906
+ DeviceTokenRequest: {
4907
+ deviceCode: string;
4908
+ hostname?: string;
4909
+ };
3135
4910
  ListProjectsResponse: {
3136
4911
  projects: components['schemas']['Project'][];
3137
4912
  total: number;
@@ -3156,11 +4931,11 @@ interface components {
3156
4931
  * @default member
3157
4932
  * @enum {string}
3158
4933
  */
3159
- role: 'owner' | 'member';
4934
+ role: 'owner' | 'admin' | 'member' | 'deployer' | 'viewer';
3160
4935
  };
3161
4936
  UpdateMemberRequest: {
3162
4937
  /** @enum {string} */
3163
- role: 'owner' | 'member';
4938
+ role: 'owner' | 'admin' | 'member' | 'deployer' | 'viewer';
3164
4939
  };
3165
4940
  ListFlowsResponse: {
3166
4941
  flows: components['schemas']['FlowSummary'][];
@@ -3180,6 +4955,73 @@ interface components {
3180
4955
  /** @example my-website-flow */
3181
4956
  name?: string;
3182
4957
  };
4958
+ DeploymentResponse: {
4959
+ id: string;
4960
+ flowId: string;
4961
+ /** @enum {string} */
4962
+ type: 'web' | 'server';
4963
+ status: string;
4964
+ containerUrl: string | null;
4965
+ publicUrl?: string | null;
4966
+ errorMessage: string | null;
4967
+ /** Format: date-time */
4968
+ createdAt: string;
4969
+ /** Format: date-time */
4970
+ updatedAt: string;
4971
+ } | null;
4972
+ StartDeploymentResponse: {
4973
+ deploymentId: string;
4974
+ /** @enum {string} */
4975
+ type: 'web' | 'server';
4976
+ status: string;
4977
+ };
4978
+ ListConfigsResponse: {
4979
+ configs: components['schemas']['FlowConfigSummary'][];
4980
+ };
4981
+ ConfigDeploymentResponse: {
4982
+ id: string;
4983
+ flowId: string;
4984
+ configId: string;
4985
+ /** @enum {string} */
4986
+ type: 'web' | 'server';
4987
+ status: string;
4988
+ containerUrl: string | null;
4989
+ publicUrl: string | null;
4990
+ errorMessage: string | null;
4991
+ /** Format: date-time */
4992
+ createdAt: string;
4993
+ /** Format: date-time */
4994
+ updatedAt: string;
4995
+ } | null;
4996
+ ConfigDeploymentDetailResponse: {
4997
+ id: string;
4998
+ flowId: string;
4999
+ configId: string;
5000
+ status: string;
5001
+ /** @enum {string} */
5002
+ type: 'web' | 'server';
5003
+ containerUrl: string | null;
5004
+ publicUrl: string | null;
5005
+ errorMessage: string | null;
5006
+ /** Format: date-time */
5007
+ createdAt: string;
5008
+ /** Format: date-time */
5009
+ updatedAt: string;
5010
+ };
5011
+ AdvanceConfigDeploymentResponse: {
5012
+ id: string;
5013
+ flowId: string;
5014
+ /** @enum {string} */
5015
+ type: 'web' | 'server';
5016
+ status: string;
5017
+ containerUrl: string | null;
5018
+ publicUrl?: string | null;
5019
+ errorMessage: string | null;
5020
+ /** Format: date-time */
5021
+ createdAt: string;
5022
+ /** Format: date-time */
5023
+ updatedAt: string;
5024
+ };
3183
5025
  ListVersionsResponse: {
3184
5026
  data: components['schemas']['Version'][];
3185
5027
  /** @example flow_a1b2c3d4 */
@@ -3229,14 +5071,15 @@ interface components {
3229
5071
  /** @example 90 */
3230
5072
  expiresInDays?: number | null;
3231
5073
  };
3232
- CreateTicketResponse: {
3233
- /** @example tkt_abc123... */
3234
- ticket: string;
3235
- /**
3236
- * Format: uri
3237
- * @example http://localhost:3001
3238
- */
3239
- observerUrl: string;
5074
+ BundleJobResponse: {
5075
+ jobId: string;
5076
+ state: string;
5077
+ hash: string;
5078
+ bundlePath: string;
5079
+ };
5080
+ RegisterRuntimeRequest: {
5081
+ flowId: string;
5082
+ bundlePath: string;
3240
5083
  };
3241
5084
  ValidateTicketResponse: {
3242
5085
  userId: string;
@@ -3249,38 +5092,6 @@ interface components {
3249
5092
  ValidateTicketRequest: {
3250
5093
  ticket: string;
3251
5094
  };
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
5095
  HealthResponse: {
3285
5096
  /** @example ok */
3286
5097
  status: string;