@walkeros/cli 4.6.0-next-1788817472881 → 4.6.0
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/CHANGELOG.md +18 -9
- package/dist/cli.js +78 -25
- package/dist/examples/docker-compose.runner.yml +2 -0
- package/dist/index.d.ts +669 -489
- package/dist/index.js +82 -28
- package/dist/index.js.map +1 -1
- package/examples/docker-compose.runner.yml +2 -0
- package/openapi/spec.json +1051 -731
- package/package.json +8 -8
package/dist/index.d.ts
CHANGED
|
@@ -336,7 +336,7 @@ type Platform = 'web' | 'server';
|
|
|
336
336
|
*
|
|
337
337
|
* Priority: `WALKEROS_TOKEN`, then a legacy static token, then the OAuth
|
|
338
338
|
* session. Returns null when nothing can be resolved, which callers render as
|
|
339
|
-
* "run `walkeros login`".
|
|
339
|
+
* "run `walkeros auth login`".
|
|
340
340
|
*
|
|
341
341
|
* Throws when a refresh was needed but could not be carried out, which is a
|
|
342
342
|
* different problem from having no session and must not be reported as one.
|
|
@@ -352,7 +352,7 @@ declare function resolveAccessToken(opts?: {
|
|
|
352
352
|
declare function getAuthHeaders(): Promise<Record<string, string>>;
|
|
353
353
|
/**
|
|
354
354
|
* Where a credential would come from, without resolving or refreshing it.
|
|
355
|
-
* For commands that want to send someone to `walkeros login` before spending
|
|
355
|
+
* For commands that want to send someone to `walkeros auth login` before spending
|
|
356
356
|
* a network round trip.
|
|
357
357
|
*/
|
|
358
358
|
declare function credentialSource(): 'env' | 'config' | null;
|
|
@@ -366,6 +366,11 @@ declare function mergeAuthHeaders(token: string | null | undefined, headers?: He
|
|
|
366
366
|
/**
|
|
367
367
|
* Authenticated fetch — resolves base URL + adds auth token.
|
|
368
368
|
* Use for all API calls that require WALKEROS_TOKEN.
|
|
369
|
+
*
|
|
370
|
+
* The transport is checked only once a credential is actually going out.
|
|
371
|
+
* `resolveAppUrl` keeps answering with whatever is configured, which is what
|
|
372
|
+
* the paths that merely REPORT the target (diagnostics, health, telemetry)
|
|
373
|
+
* need from it.
|
|
369
374
|
*/
|
|
370
375
|
declare function apiFetch(path: string, init?: RequestInit): Promise<Response>;
|
|
371
376
|
/**
|
|
@@ -819,6 +824,11 @@ interface LogoutCommandOptions extends GlobalOptions {
|
|
|
819
824
|
json?: boolean;
|
|
820
825
|
}
|
|
821
826
|
declare function logoutCommand(options: LogoutCommandOptions): Promise<void>;
|
|
827
|
+
interface LogoutResult {
|
|
828
|
+
deleted: boolean;
|
|
829
|
+
/** A different session reached the config while the revocation was in flight. */
|
|
830
|
+
superseded: boolean;
|
|
831
|
+
}
|
|
822
832
|
/**
|
|
823
833
|
* Revoke the stored refresh token, then drop the local config.
|
|
824
834
|
*
|
|
@@ -826,9 +836,7 @@ declare function logoutCommand(options: LogoutCommandOptions): Promise<void>;
|
|
|
826
836
|
* alive on the server that nothing can ever reach to retire. It is best
|
|
827
837
|
* effort: a logout on a plane still has to clear the machine.
|
|
828
838
|
*/
|
|
829
|
-
declare function logout(): Promise<
|
|
830
|
-
deleted: boolean;
|
|
831
|
-
}>;
|
|
839
|
+
declare function logout(): Promise<LogoutResult>;
|
|
832
840
|
|
|
833
841
|
declare function whoami(): Promise<{
|
|
834
842
|
userId: string;
|
|
@@ -1353,158 +1361,6 @@ interface paths {
|
|
|
1353
1361
|
patch?: never;
|
|
1354
1362
|
trace?: never;
|
|
1355
1363
|
};
|
|
1356
|
-
'/api/auth/device/code': {
|
|
1357
|
-
parameters: {
|
|
1358
|
-
query?: never;
|
|
1359
|
-
header?: never;
|
|
1360
|
-
path?: never;
|
|
1361
|
-
cookie?: never;
|
|
1362
|
-
};
|
|
1363
|
-
get?: never;
|
|
1364
|
-
put?: never;
|
|
1365
|
-
/**
|
|
1366
|
-
* Request device code
|
|
1367
|
-
* @description Generate a device code and user code for the device authorization flow.
|
|
1368
|
-
*/
|
|
1369
|
-
post: {
|
|
1370
|
-
parameters: {
|
|
1371
|
-
query?: never;
|
|
1372
|
-
header?: never;
|
|
1373
|
-
path?: never;
|
|
1374
|
-
cookie?: never;
|
|
1375
|
-
};
|
|
1376
|
-
requestBody?: never;
|
|
1377
|
-
responses: {
|
|
1378
|
-
/** @description Device code generated */
|
|
1379
|
-
200: {
|
|
1380
|
-
headers: {
|
|
1381
|
-
[name: string]: unknown;
|
|
1382
|
-
};
|
|
1383
|
-
content: {
|
|
1384
|
-
'application/json': components['schemas']['DeviceCodeResponse'];
|
|
1385
|
-
};
|
|
1386
|
-
};
|
|
1387
|
-
};
|
|
1388
|
-
};
|
|
1389
|
-
delete?: never;
|
|
1390
|
-
options?: never;
|
|
1391
|
-
head?: never;
|
|
1392
|
-
patch?: never;
|
|
1393
|
-
trace?: never;
|
|
1394
|
-
};
|
|
1395
|
-
'/api/auth/device/approve': {
|
|
1396
|
-
parameters: {
|
|
1397
|
-
query?: never;
|
|
1398
|
-
header?: never;
|
|
1399
|
-
path?: never;
|
|
1400
|
-
cookie?: never;
|
|
1401
|
-
};
|
|
1402
|
-
get?: never;
|
|
1403
|
-
put?: never;
|
|
1404
|
-
/**
|
|
1405
|
-
* Approve device code
|
|
1406
|
-
* @description Approve a device authorization request using the user code. Requires authentication.
|
|
1407
|
-
*/
|
|
1408
|
-
post: {
|
|
1409
|
-
parameters: {
|
|
1410
|
-
query?: never;
|
|
1411
|
-
header?: never;
|
|
1412
|
-
path?: never;
|
|
1413
|
-
cookie?: never;
|
|
1414
|
-
};
|
|
1415
|
-
requestBody?: {
|
|
1416
|
-
content: {
|
|
1417
|
-
'application/json': components['schemas']['ApproveDeviceRequest'];
|
|
1418
|
-
};
|
|
1419
|
-
};
|
|
1420
|
-
responses: {
|
|
1421
|
-
/** @description Device approved */
|
|
1422
|
-
200: {
|
|
1423
|
-
headers: {
|
|
1424
|
-
[name: string]: unknown;
|
|
1425
|
-
};
|
|
1426
|
-
content: {
|
|
1427
|
-
'application/json': components['schemas']['ApproveDeviceResponse'];
|
|
1428
|
-
};
|
|
1429
|
-
};
|
|
1430
|
-
/** @description Unauthorized */
|
|
1431
|
-
401: {
|
|
1432
|
-
headers: {
|
|
1433
|
-
[name: string]: unknown;
|
|
1434
|
-
};
|
|
1435
|
-
content: {
|
|
1436
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
1437
|
-
};
|
|
1438
|
-
};
|
|
1439
|
-
/** @description Not found */
|
|
1440
|
-
404: {
|
|
1441
|
-
headers: {
|
|
1442
|
-
[name: string]: unknown;
|
|
1443
|
-
};
|
|
1444
|
-
content: {
|
|
1445
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
1446
|
-
};
|
|
1447
|
-
};
|
|
1448
|
-
};
|
|
1449
|
-
};
|
|
1450
|
-
delete?: never;
|
|
1451
|
-
options?: never;
|
|
1452
|
-
head?: never;
|
|
1453
|
-
patch?: never;
|
|
1454
|
-
trace?: never;
|
|
1455
|
-
};
|
|
1456
|
-
'/api/auth/device/token': {
|
|
1457
|
-
parameters: {
|
|
1458
|
-
query?: never;
|
|
1459
|
-
header?: never;
|
|
1460
|
-
path?: never;
|
|
1461
|
-
cookie?: never;
|
|
1462
|
-
};
|
|
1463
|
-
get?: never;
|
|
1464
|
-
put?: never;
|
|
1465
|
-
/**
|
|
1466
|
-
* Poll device token
|
|
1467
|
-
* @description Poll for authorization status using the device code. Returns a token when approved.
|
|
1468
|
-
*/
|
|
1469
|
-
post: {
|
|
1470
|
-
parameters: {
|
|
1471
|
-
query?: never;
|
|
1472
|
-
header?: never;
|
|
1473
|
-
path?: never;
|
|
1474
|
-
cookie?: never;
|
|
1475
|
-
};
|
|
1476
|
-
requestBody?: {
|
|
1477
|
-
content: {
|
|
1478
|
-
'application/json': components['schemas']['DeviceTokenRequest'];
|
|
1479
|
-
};
|
|
1480
|
-
};
|
|
1481
|
-
responses: {
|
|
1482
|
-
/** @description Authorization approved */
|
|
1483
|
-
200: {
|
|
1484
|
-
headers: {
|
|
1485
|
-
[name: string]: unknown;
|
|
1486
|
-
};
|
|
1487
|
-
content: {
|
|
1488
|
-
'application/json': components['schemas']['DeviceTokenResponse'];
|
|
1489
|
-
};
|
|
1490
|
-
};
|
|
1491
|
-
/** @description Pending, slow down, or expired */
|
|
1492
|
-
400: {
|
|
1493
|
-
headers: {
|
|
1494
|
-
[name: string]: unknown;
|
|
1495
|
-
};
|
|
1496
|
-
content: {
|
|
1497
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
1498
|
-
};
|
|
1499
|
-
};
|
|
1500
|
-
};
|
|
1501
|
-
};
|
|
1502
|
-
delete?: never;
|
|
1503
|
-
options?: never;
|
|
1504
|
-
head?: never;
|
|
1505
|
-
patch?: never;
|
|
1506
|
-
trace?: never;
|
|
1507
|
-
};
|
|
1508
1364
|
'/api/projects': {
|
|
1509
1365
|
parameters: {
|
|
1510
1366
|
query?: never;
|
|
@@ -4950,8 +4806,8 @@ interface paths {
|
|
|
4950
4806
|
cookie?: never;
|
|
4951
4807
|
};
|
|
4952
4808
|
/**
|
|
4953
|
-
* List my tokens
|
|
4954
|
-
* @description
|
|
4809
|
+
* List my automation tokens
|
|
4810
|
+
* @description The caller's live automation tokens, with the scope and audience each carries. No raw token value is ever returned; `tokenPrefix` is the only fragment of one that survives issuance. A connected app's access token lives in the same store and is deliberately absent: it is taken back by disconnecting the app.
|
|
4955
4811
|
*/
|
|
4956
4812
|
get: {
|
|
4957
4813
|
parameters: {
|
|
@@ -4962,13 +4818,13 @@ interface paths {
|
|
|
4962
4818
|
};
|
|
4963
4819
|
requestBody?: never;
|
|
4964
4820
|
responses: {
|
|
4965
|
-
/** @description List of tokens */
|
|
4821
|
+
/** @description List of automation tokens */
|
|
4966
4822
|
200: {
|
|
4967
4823
|
headers: {
|
|
4968
4824
|
[name: string]: unknown;
|
|
4969
4825
|
};
|
|
4970
4826
|
content: {
|
|
4971
|
-
'application/json': components['schemas']['
|
|
4827
|
+
'application/json': components['schemas']['ListAutomationTokensResponse'];
|
|
4972
4828
|
};
|
|
4973
4829
|
};
|
|
4974
4830
|
/** @description Unauthorized */
|
|
@@ -4984,8 +4840,8 @@ interface paths {
|
|
|
4984
4840
|
};
|
|
4985
4841
|
put?: never;
|
|
4986
4842
|
/**
|
|
4987
|
-
* Create token
|
|
4988
|
-
* @description
|
|
4843
|
+
* Create automation token
|
|
4844
|
+
* @description Mint an automation token for the authenticated user. The audience is `api` and `mcp`, so one token works against REST and against `/api/mcp`, and the chosen scope decides how far it gets at either: `read` is refused every non-safe REST method with 403 `INSUFFICIENT_SCOPE`. The raw token is returned once and cannot be retrieved again, so the answer carries `Cache-Control: no-store`.
|
|
4989
4845
|
*/
|
|
4990
4846
|
post: {
|
|
4991
4847
|
parameters: {
|
|
@@ -4996,7 +4852,7 @@ interface paths {
|
|
|
4996
4852
|
};
|
|
4997
4853
|
requestBody?: {
|
|
4998
4854
|
content: {
|
|
4999
|
-
'application/json': components['schemas']['
|
|
4855
|
+
'application/json': components['schemas']['CreateAutomationTokenRequest'];
|
|
5000
4856
|
};
|
|
5001
4857
|
};
|
|
5002
4858
|
responses: {
|
|
@@ -5006,7 +4862,7 @@ interface paths {
|
|
|
5006
4862
|
[name: string]: unknown;
|
|
5007
4863
|
};
|
|
5008
4864
|
content: {
|
|
5009
|
-
'application/json': components['schemas']['
|
|
4865
|
+
'application/json': components['schemas']['CreateAutomationTokenResponse'];
|
|
5010
4866
|
};
|
|
5011
4867
|
};
|
|
5012
4868
|
/** @description Validation error */
|
|
@@ -5044,6 +4900,52 @@ interface paths {
|
|
|
5044
4900
|
patch?: never;
|
|
5045
4901
|
trace?: never;
|
|
5046
4902
|
};
|
|
4903
|
+
'/api/tokens/revoke-all': {
|
|
4904
|
+
parameters: {
|
|
4905
|
+
query?: never;
|
|
4906
|
+
header?: never;
|
|
4907
|
+
path?: never;
|
|
4908
|
+
cookie?: never;
|
|
4909
|
+
};
|
|
4910
|
+
get?: never;
|
|
4911
|
+
put?: never;
|
|
4912
|
+
/**
|
|
4913
|
+
* Revoke all access
|
|
4914
|
+
* @description Revoke every grant this person holds, the tokens hanging from them, and every automation token they hold. Runner tokens survive: those are the credentials deployed flow containers run with, so revoking them would stop every container the person is running. Session only: a bearer credential is refused with 401 `SESSION_REQUIRED`, so a machine token cannot disconnect everything its owner has connected.
|
|
4915
|
+
*/
|
|
4916
|
+
post: {
|
|
4917
|
+
parameters: {
|
|
4918
|
+
query?: never;
|
|
4919
|
+
header?: never;
|
|
4920
|
+
path?: never;
|
|
4921
|
+
cookie?: never;
|
|
4922
|
+
};
|
|
4923
|
+
requestBody?: never;
|
|
4924
|
+
responses: {
|
|
4925
|
+
/** @description Access revoked */
|
|
4926
|
+
204: {
|
|
4927
|
+
headers: {
|
|
4928
|
+
[name: string]: unknown;
|
|
4929
|
+
};
|
|
4930
|
+
content?: never;
|
|
4931
|
+
};
|
|
4932
|
+
/** @description Unauthorized */
|
|
4933
|
+
401: {
|
|
4934
|
+
headers: {
|
|
4935
|
+
[name: string]: unknown;
|
|
4936
|
+
};
|
|
4937
|
+
content: {
|
|
4938
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
4939
|
+
};
|
|
4940
|
+
};
|
|
4941
|
+
};
|
|
4942
|
+
};
|
|
4943
|
+
delete?: never;
|
|
4944
|
+
options?: never;
|
|
4945
|
+
head?: never;
|
|
4946
|
+
patch?: never;
|
|
4947
|
+
trace?: never;
|
|
4948
|
+
};
|
|
5047
4949
|
'/api/tokens/{tokenId}': {
|
|
5048
4950
|
parameters: {
|
|
5049
4951
|
query?: never;
|
|
@@ -5055,8 +4957,8 @@ interface paths {
|
|
|
5055
4957
|
put?: never;
|
|
5056
4958
|
post?: never;
|
|
5057
4959
|
/**
|
|
5058
|
-
* Revoke token
|
|
5059
|
-
* @description Revoke an
|
|
4960
|
+
* Revoke automation token
|
|
4961
|
+
* @description Revoke one of the caller's tokens. Idempotent and scoped to the caller: an unknown id, another person's token and an already revoked one all answer 204, since a distinguishable answer would tell the caller which ids exist.
|
|
5060
4962
|
*/
|
|
5061
4963
|
delete: {
|
|
5062
4964
|
parameters: {
|
|
@@ -8680,12 +8582,13 @@ interface paths {
|
|
|
8680
8582
|
};
|
|
8681
8583
|
/**
|
|
8682
8584
|
* List the frames of a page, or of the whole project
|
|
8683
|
-
* @description A frame is a named rectangle with marks inside it, the spatial unit of a measurement plan. Naming a `pageKey` returns that page’s frames at any depth, marks and all, newest updated first: the walk starts at the page’s top-level frames and descends containment, so a child is reachable through its parent rather than by carrying a page of its own. Naming no page returns every live frame of the project WITHOUT its marks, which is what makes that read cheap enough to answer "what does this project have": the marks are the bulk of a frame and a listing never renders them. That lean read asks nothing about containment, so a frame whose parent cannot be resolved still appears. Requires member role.
|
|
8585
|
+
* @description A frame is a named rectangle with marks inside it, the spatial unit of a measurement plan. Naming a `pageKey` returns that page’s frames at any depth, marks and all, newest updated first: the walk starts at the page’s top-level frames and descends containment, so a child is reachable through its parent rather than by carrying a page of its own. Naming no page returns every live frame of the project WITHOUT its marks, which is what makes that read cheap enough to answer "what does this project have": the marks are the bulk of a frame and a listing never renders them. That lean read asks nothing about containment, so a frame whose parent cannot be resolved still appears. `include=marks` asks that project-wide read for the marks anyway, for a surface that spans pages and cannot fetch a page at a time; it is a second, heavier read of the same rows, taken after the lean list has already painted, and omitting it returns exactly the lean rows. It says nothing to the page read, which carries marks either way. Requires member role.
|
|
8684
8586
|
*/
|
|
8685
8587
|
get: {
|
|
8686
8588
|
parameters: {
|
|
8687
8589
|
query?: {
|
|
8688
8590
|
pageKey?: string;
|
|
8591
|
+
include?: 'marks';
|
|
8689
8592
|
};
|
|
8690
8593
|
header?: never;
|
|
8691
8594
|
path: {
|
|
@@ -9211,7 +9114,7 @@ interface paths {
|
|
|
9211
9114
|
patch?: never;
|
|
9212
9115
|
trace?: never;
|
|
9213
9116
|
};
|
|
9214
|
-
'/api/projects/{projectId}/
|
|
9117
|
+
'/api/projects/{projectId}/canvases': {
|
|
9215
9118
|
parameters: {
|
|
9216
9119
|
query?: never;
|
|
9217
9120
|
header?: never;
|
|
@@ -9219,41 +9122,27 @@ interface paths {
|
|
|
9219
9122
|
cookie?: never;
|
|
9220
9123
|
};
|
|
9221
9124
|
/**
|
|
9222
|
-
* List the
|
|
9223
|
-
* @description
|
|
9125
|
+
* List the canvases of the project
|
|
9126
|
+
* @description A canvas is a named, freely arranged board over a project’s frames, the surface on which a plan is laid out across pages rather than within one. This returns every live canvas by name WITHOUT its document: the document is the bulk of a canvas and a listing renders none of it, so opening a board is the single-canvas read. Requires member role.
|
|
9224
9127
|
*/
|
|
9225
9128
|
get: {
|
|
9226
9129
|
parameters: {
|
|
9227
|
-
query
|
|
9228
|
-
step: string;
|
|
9229
|
-
flow?: string;
|
|
9230
|
-
limit?: number | null;
|
|
9231
|
-
};
|
|
9130
|
+
query?: never;
|
|
9232
9131
|
header?: never;
|
|
9233
9132
|
path: {
|
|
9234
9133
|
projectId: string;
|
|
9235
|
-
flowId: string;
|
|
9236
9134
|
};
|
|
9237
9135
|
cookie?: never;
|
|
9238
9136
|
};
|
|
9239
9137
|
requestBody?: never;
|
|
9240
9138
|
responses: {
|
|
9241
|
-
/** @description The
|
|
9139
|
+
/** @description The project’s canvases, without their documents */
|
|
9242
9140
|
200: {
|
|
9243
9141
|
headers: {
|
|
9244
9142
|
[name: string]: unknown;
|
|
9245
9143
|
};
|
|
9246
9144
|
content: {
|
|
9247
|
-
'application/json': components['schemas']['
|
|
9248
|
-
};
|
|
9249
|
-
};
|
|
9250
|
-
/** @description Invalid step key or query */
|
|
9251
|
-
400: {
|
|
9252
|
-
headers: {
|
|
9253
|
-
[name: string]: unknown;
|
|
9254
|
-
};
|
|
9255
|
-
content: {
|
|
9256
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
9145
|
+
'application/json': components['schemas']['CanvasListResponse'];
|
|
9257
9146
|
};
|
|
9258
9147
|
};
|
|
9259
9148
|
/** @description Unauthorized */
|
|
@@ -9295,25 +9184,9 @@ interface paths {
|
|
|
9295
9184
|
};
|
|
9296
9185
|
};
|
|
9297
9186
|
put?: never;
|
|
9298
|
-
post?: never;
|
|
9299
|
-
delete?: never;
|
|
9300
|
-
options?: never;
|
|
9301
|
-
head?: never;
|
|
9302
|
-
patch?: never;
|
|
9303
|
-
trace?: never;
|
|
9304
|
-
};
|
|
9305
|
-
'/api/projects/{projectId}/flows/{flowId}/releases/summarize': {
|
|
9306
|
-
parameters: {
|
|
9307
|
-
query?: never;
|
|
9308
|
-
header?: never;
|
|
9309
|
-
path?: never;
|
|
9310
|
-
cookie?: never;
|
|
9311
|
-
};
|
|
9312
|
-
get?: never;
|
|
9313
|
-
put?: never;
|
|
9314
9187
|
/**
|
|
9315
|
-
*
|
|
9316
|
-
* @description
|
|
9188
|
+
* Create one canvas
|
|
9189
|
+
* @description Create one empty canvas at version 1. The id is the client’s, so a board drawn before the first save keeps its identity when it arrives. A canvas comes into existence here and nowhere else: a document write to an id the project does not hold is a 404 rather than a create, which is what keeps a stray write from minting a board. A name another live canvas already holds is 409 `CANVAS_NAME_EXISTS`; the partial unique index is over live rows, so a name a deleted canvas still carries is free. An id that is not a canvas id is refused by the body schema as 400 `VALIDATION_ERROR`. An id that is not available, because a canvas, in this project or another, already holds it, is 400 `INVALID_CANVAS`, whose message says nothing about the project that holds it. Requires member role.
|
|
9317
9190
|
*/
|
|
9318
9191
|
post: {
|
|
9319
9192
|
parameters: {
|
|
@@ -9321,34 +9194,29 @@ interface paths {
|
|
|
9321
9194
|
header?: never;
|
|
9322
9195
|
path: {
|
|
9323
9196
|
projectId: string;
|
|
9324
|
-
flowId: string;
|
|
9325
9197
|
};
|
|
9326
9198
|
cookie?: never;
|
|
9327
9199
|
};
|
|
9328
9200
|
requestBody?: {
|
|
9329
9201
|
content: {
|
|
9330
9202
|
'application/json': {
|
|
9331
|
-
/** @example
|
|
9332
|
-
|
|
9333
|
-
|
|
9334
|
-
prevVersionId: string;
|
|
9335
|
-
/** @enum {string} */
|
|
9336
|
-
mode: 'draft' | 'check';
|
|
9337
|
-
currentText?: string;
|
|
9203
|
+
/** @example cnv_V1StGXR8Z5jdHi6BmyT7K */
|
|
9204
|
+
id: string;
|
|
9205
|
+
name: string;
|
|
9338
9206
|
};
|
|
9339
9207
|
};
|
|
9340
9208
|
};
|
|
9341
9209
|
responses: {
|
|
9342
|
-
/** @description The
|
|
9343
|
-
|
|
9210
|
+
/** @description The created canvas, with its empty document */
|
|
9211
|
+
201: {
|
|
9344
9212
|
headers: {
|
|
9345
9213
|
[name: string]: unknown;
|
|
9346
9214
|
};
|
|
9347
9215
|
content: {
|
|
9348
|
-
'application/json': components['schemas']['
|
|
9216
|
+
'application/json': components['schemas']['Canvas'];
|
|
9349
9217
|
};
|
|
9350
9218
|
};
|
|
9351
|
-
/** @description Invalid body,
|
|
9219
|
+
/** @description Invalid body, or an id that is not available */
|
|
9352
9220
|
400: {
|
|
9353
9221
|
headers: {
|
|
9354
9222
|
[name: string]: unknown;
|
|
@@ -9384,8 +9252,8 @@ interface paths {
|
|
|
9384
9252
|
'application/json': components['schemas']['ErrorResponse'];
|
|
9385
9253
|
};
|
|
9386
9254
|
};
|
|
9387
|
-
/** @description
|
|
9388
|
-
|
|
9255
|
+
/** @description A name another live canvas already holds */
|
|
9256
|
+
409: {
|
|
9389
9257
|
headers: {
|
|
9390
9258
|
[name: string]: unknown;
|
|
9391
9259
|
};
|
|
@@ -9393,8 +9261,8 @@ interface paths {
|
|
|
9393
9261
|
'application/json': components['schemas']['ErrorResponse'];
|
|
9394
9262
|
};
|
|
9395
9263
|
};
|
|
9396
|
-
/** @description
|
|
9397
|
-
|
|
9264
|
+
/** @description Rate limited */
|
|
9265
|
+
429: {
|
|
9398
9266
|
headers: {
|
|
9399
9267
|
[name: string]: unknown;
|
|
9400
9268
|
};
|
|
@@ -9410,7 +9278,7 @@ interface paths {
|
|
|
9410
9278
|
patch?: never;
|
|
9411
9279
|
trace?: never;
|
|
9412
9280
|
};
|
|
9413
|
-
'/api/projects/{projectId}/
|
|
9281
|
+
'/api/projects/{projectId}/canvases/{canvasId}': {
|
|
9414
9282
|
parameters: {
|
|
9415
9283
|
query?: never;
|
|
9416
9284
|
header?: never;
|
|
@@ -9418,8 +9286,8 @@ interface paths {
|
|
|
9418
9286
|
cookie?: never;
|
|
9419
9287
|
};
|
|
9420
9288
|
/**
|
|
9421
|
-
*
|
|
9422
|
-
* @description
|
|
9289
|
+
* Read one canvas
|
|
9290
|
+
* @description One canvas with its whole document: the nodes with their positions, the edges, and the node keys the board suppresses. A canvas of another project reads back as nothing and answers 404, never 403, so this route cannot become an oracle for what exists elsewhere. A deleted canvas is gone to every read. Requires member role.
|
|
9423
9291
|
*/
|
|
9424
9292
|
get: {
|
|
9425
9293
|
parameters: {
|
|
@@ -9427,23 +9295,24 @@ interface paths {
|
|
|
9427
9295
|
header?: never;
|
|
9428
9296
|
path: {
|
|
9429
9297
|
projectId: string;
|
|
9430
|
-
|
|
9298
|
+
/** @description Canvas ID (cnv_...) */
|
|
9299
|
+
canvasId: string;
|
|
9431
9300
|
};
|
|
9432
9301
|
cookie?: never;
|
|
9433
9302
|
};
|
|
9434
9303
|
requestBody?: never;
|
|
9435
9304
|
responses: {
|
|
9436
|
-
/** @description
|
|
9305
|
+
/** @description The canvas */
|
|
9437
9306
|
200: {
|
|
9438
9307
|
headers: {
|
|
9439
9308
|
[name: string]: unknown;
|
|
9440
9309
|
};
|
|
9441
9310
|
content: {
|
|
9442
|
-
'application/json': components['schemas']['
|
|
9311
|
+
'application/json': components['schemas']['Canvas'];
|
|
9443
9312
|
};
|
|
9444
9313
|
};
|
|
9445
|
-
/** @description
|
|
9446
|
-
|
|
9314
|
+
/** @description The path segment does not address a canvas */
|
|
9315
|
+
400: {
|
|
9447
9316
|
headers: {
|
|
9448
9317
|
[name: string]: unknown;
|
|
9449
9318
|
};
|
|
@@ -9451,8 +9320,383 @@ interface paths {
|
|
|
9451
9320
|
'application/json': components['schemas']['ErrorResponse'];
|
|
9452
9321
|
};
|
|
9453
9322
|
};
|
|
9454
|
-
/** @description
|
|
9455
|
-
|
|
9323
|
+
/** @description Unauthorized */
|
|
9324
|
+
401: {
|
|
9325
|
+
headers: {
|
|
9326
|
+
[name: string]: unknown;
|
|
9327
|
+
};
|
|
9328
|
+
content: {
|
|
9329
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9330
|
+
};
|
|
9331
|
+
};
|
|
9332
|
+
/** @description Forbidden */
|
|
9333
|
+
403: {
|
|
9334
|
+
headers: {
|
|
9335
|
+
[name: string]: unknown;
|
|
9336
|
+
};
|
|
9337
|
+
content: {
|
|
9338
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9339
|
+
};
|
|
9340
|
+
};
|
|
9341
|
+
/** @description Not found */
|
|
9342
|
+
404: {
|
|
9343
|
+
headers: {
|
|
9344
|
+
[name: string]: unknown;
|
|
9345
|
+
};
|
|
9346
|
+
content: {
|
|
9347
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9348
|
+
};
|
|
9349
|
+
};
|
|
9350
|
+
/** @description Rate limited */
|
|
9351
|
+
429: {
|
|
9352
|
+
headers: {
|
|
9353
|
+
[name: string]: unknown;
|
|
9354
|
+
};
|
|
9355
|
+
content: {
|
|
9356
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9357
|
+
};
|
|
9358
|
+
};
|
|
9359
|
+
};
|
|
9360
|
+
};
|
|
9361
|
+
/**
|
|
9362
|
+
* Replace the document of one canvas
|
|
9363
|
+
* @description The whole board every time: a canvas is read and written as a unit, so there is no partial write to reconcile. `clientWriteId` is minted at compose time and is what makes a replayed drain exact: a write whose id already produced the stored version landed once and is answered with that version, writing nothing, so an offline queue drains repeatedly without turning one edit into two versions. A write against a version someone else has moved past answers 409 `CANVAS_VERSION_CONFLICT` carrying the head, which is what lets a client raise keep-mine against load-theirs on the board that conflicted instead of dropping what a person drew. A canvas this project does not hold, or one that was removed, is 404 `CANVAS_NOT_FOUND`: this door replaces a document and never creates one. Requires member role.
|
|
9364
|
+
*/
|
|
9365
|
+
put: {
|
|
9366
|
+
parameters: {
|
|
9367
|
+
query?: never;
|
|
9368
|
+
header?: never;
|
|
9369
|
+
path: {
|
|
9370
|
+
projectId: string;
|
|
9371
|
+
/** @description Canvas ID (cnv_...) */
|
|
9372
|
+
canvasId: string;
|
|
9373
|
+
};
|
|
9374
|
+
cookie?: never;
|
|
9375
|
+
};
|
|
9376
|
+
requestBody?: {
|
|
9377
|
+
content: {
|
|
9378
|
+
'application/json': {
|
|
9379
|
+
document: components['schemas']['CanvasDocument'];
|
|
9380
|
+
baseVersion: number;
|
|
9381
|
+
clientWriteId: string;
|
|
9382
|
+
};
|
|
9383
|
+
};
|
|
9384
|
+
};
|
|
9385
|
+
responses: {
|
|
9386
|
+
/** @description The stored version */
|
|
9387
|
+
200: {
|
|
9388
|
+
headers: {
|
|
9389
|
+
[name: string]: unknown;
|
|
9390
|
+
};
|
|
9391
|
+
content: {
|
|
9392
|
+
'application/json': components['schemas']['PutCanvasResponse'];
|
|
9393
|
+
};
|
|
9394
|
+
};
|
|
9395
|
+
/** @description Invalid body, or a path segment that addresses no canvas */
|
|
9396
|
+
400: {
|
|
9397
|
+
headers: {
|
|
9398
|
+
[name: string]: unknown;
|
|
9399
|
+
};
|
|
9400
|
+
content: {
|
|
9401
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9402
|
+
};
|
|
9403
|
+
};
|
|
9404
|
+
/** @description Unauthorized */
|
|
9405
|
+
401: {
|
|
9406
|
+
headers: {
|
|
9407
|
+
[name: string]: unknown;
|
|
9408
|
+
};
|
|
9409
|
+
content: {
|
|
9410
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9411
|
+
};
|
|
9412
|
+
};
|
|
9413
|
+
/** @description Forbidden */
|
|
9414
|
+
403: {
|
|
9415
|
+
headers: {
|
|
9416
|
+
[name: string]: unknown;
|
|
9417
|
+
};
|
|
9418
|
+
content: {
|
|
9419
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9420
|
+
};
|
|
9421
|
+
};
|
|
9422
|
+
/** @description This project does not hold the named canvas */
|
|
9423
|
+
404: {
|
|
9424
|
+
headers: {
|
|
9425
|
+
[name: string]: unknown;
|
|
9426
|
+
};
|
|
9427
|
+
content: {
|
|
9428
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9429
|
+
};
|
|
9430
|
+
};
|
|
9431
|
+
/** @description A stale base version, carrying the head */
|
|
9432
|
+
409: {
|
|
9433
|
+
headers: {
|
|
9434
|
+
[name: string]: unknown;
|
|
9435
|
+
};
|
|
9436
|
+
content: {
|
|
9437
|
+
'application/json': components['schemas']['CanvasConflictResponse'];
|
|
9438
|
+
};
|
|
9439
|
+
};
|
|
9440
|
+
/** @description Rate limited */
|
|
9441
|
+
429: {
|
|
9442
|
+
headers: {
|
|
9443
|
+
[name: string]: unknown;
|
|
9444
|
+
};
|
|
9445
|
+
content: {
|
|
9446
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9447
|
+
};
|
|
9448
|
+
};
|
|
9449
|
+
};
|
|
9450
|
+
};
|
|
9451
|
+
post?: never;
|
|
9452
|
+
delete?: never;
|
|
9453
|
+
options?: never;
|
|
9454
|
+
head?: never;
|
|
9455
|
+
patch?: never;
|
|
9456
|
+
trace?: never;
|
|
9457
|
+
};
|
|
9458
|
+
'/api/projects/{projectId}/flows/{flowId}/releases/step-history': {
|
|
9459
|
+
parameters: {
|
|
9460
|
+
query?: never;
|
|
9461
|
+
header?: never;
|
|
9462
|
+
path?: never;
|
|
9463
|
+
cookie?: never;
|
|
9464
|
+
};
|
|
9465
|
+
/**
|
|
9466
|
+
* List the releases that touched one step
|
|
9467
|
+
* @description The releases of this flow that added, changed, or removed one step, newest first, each carrying the rationale stored for it. `step` is a `type.name` key over source, transformer, destination, store, and contract. `flow` narrows the scan to one named flow inside the config and is ignored for a contract key. `limit` bounds the releases scanned, not the entries returned. When nothing matched, `knownSteps` lists the addressable keys of the newest scanned release. Requires member role.
|
|
9468
|
+
*/
|
|
9469
|
+
get: {
|
|
9470
|
+
parameters: {
|
|
9471
|
+
query: {
|
|
9472
|
+
step: string;
|
|
9473
|
+
flow?: string;
|
|
9474
|
+
limit?: number | null;
|
|
9475
|
+
};
|
|
9476
|
+
header?: never;
|
|
9477
|
+
path: {
|
|
9478
|
+
projectId: string;
|
|
9479
|
+
flowId: string;
|
|
9480
|
+
};
|
|
9481
|
+
cookie?: never;
|
|
9482
|
+
};
|
|
9483
|
+
requestBody?: never;
|
|
9484
|
+
responses: {
|
|
9485
|
+
/** @description The releases that touched the step */
|
|
9486
|
+
200: {
|
|
9487
|
+
headers: {
|
|
9488
|
+
[name: string]: unknown;
|
|
9489
|
+
};
|
|
9490
|
+
content: {
|
|
9491
|
+
'application/json': components['schemas']['StepHistoryResponse'];
|
|
9492
|
+
};
|
|
9493
|
+
};
|
|
9494
|
+
/** @description Invalid step key or query */
|
|
9495
|
+
400: {
|
|
9496
|
+
headers: {
|
|
9497
|
+
[name: string]: unknown;
|
|
9498
|
+
};
|
|
9499
|
+
content: {
|
|
9500
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9501
|
+
};
|
|
9502
|
+
};
|
|
9503
|
+
/** @description Unauthorized */
|
|
9504
|
+
401: {
|
|
9505
|
+
headers: {
|
|
9506
|
+
[name: string]: unknown;
|
|
9507
|
+
};
|
|
9508
|
+
content: {
|
|
9509
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9510
|
+
};
|
|
9511
|
+
};
|
|
9512
|
+
/** @description Forbidden */
|
|
9513
|
+
403: {
|
|
9514
|
+
headers: {
|
|
9515
|
+
[name: string]: unknown;
|
|
9516
|
+
};
|
|
9517
|
+
content: {
|
|
9518
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9519
|
+
};
|
|
9520
|
+
};
|
|
9521
|
+
/** @description Not found */
|
|
9522
|
+
404: {
|
|
9523
|
+
headers: {
|
|
9524
|
+
[name: string]: unknown;
|
|
9525
|
+
};
|
|
9526
|
+
content: {
|
|
9527
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9528
|
+
};
|
|
9529
|
+
};
|
|
9530
|
+
/** @description Rate limited */
|
|
9531
|
+
429: {
|
|
9532
|
+
headers: {
|
|
9533
|
+
[name: string]: unknown;
|
|
9534
|
+
};
|
|
9535
|
+
content: {
|
|
9536
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9537
|
+
};
|
|
9538
|
+
};
|
|
9539
|
+
};
|
|
9540
|
+
};
|
|
9541
|
+
put?: never;
|
|
9542
|
+
post?: never;
|
|
9543
|
+
delete?: never;
|
|
9544
|
+
options?: never;
|
|
9545
|
+
head?: never;
|
|
9546
|
+
patch?: never;
|
|
9547
|
+
trace?: never;
|
|
9548
|
+
};
|
|
9549
|
+
'/api/projects/{projectId}/flows/{flowId}/releases/summarize': {
|
|
9550
|
+
parameters: {
|
|
9551
|
+
query?: never;
|
|
9552
|
+
header?: never;
|
|
9553
|
+
path?: never;
|
|
9554
|
+
cookie?: never;
|
|
9555
|
+
};
|
|
9556
|
+
get?: never;
|
|
9557
|
+
put?: never;
|
|
9558
|
+
/**
|
|
9559
|
+
* Summarize or check a release
|
|
9560
|
+
* @description Describe what one release of this flow changed against an earlier release, or check a written note against that same change. In `draft` mode the generated text is stored as the release's generated summary; in `check` mode nothing is stored and the response says whether the note matches. The diff is always recomputed from the two stored snapshots, with secret literals masked, and is never taken from the request. Both versions must be numbered releases of this flow, and `prevVersionId` must be the earlier of the two. Requires member role and the `hub` feature.
|
|
9561
|
+
*/
|
|
9562
|
+
post: {
|
|
9563
|
+
parameters: {
|
|
9564
|
+
query?: never;
|
|
9565
|
+
header?: never;
|
|
9566
|
+
path: {
|
|
9567
|
+
projectId: string;
|
|
9568
|
+
flowId: string;
|
|
9569
|
+
};
|
|
9570
|
+
cookie?: never;
|
|
9571
|
+
};
|
|
9572
|
+
requestBody?: {
|
|
9573
|
+
content: {
|
|
9574
|
+
'application/json': {
|
|
9575
|
+
/** @example ver_a1b2c3d4 */
|
|
9576
|
+
versionId: string;
|
|
9577
|
+
/** @example ver_a1b2c3d4 */
|
|
9578
|
+
prevVersionId: string;
|
|
9579
|
+
/** @enum {string} */
|
|
9580
|
+
mode: 'draft' | 'check';
|
|
9581
|
+
currentText?: string;
|
|
9582
|
+
};
|
|
9583
|
+
};
|
|
9584
|
+
};
|
|
9585
|
+
responses: {
|
|
9586
|
+
/** @description The generated summary or the check verdict */
|
|
9587
|
+
200: {
|
|
9588
|
+
headers: {
|
|
9589
|
+
[name: string]: unknown;
|
|
9590
|
+
};
|
|
9591
|
+
content: {
|
|
9592
|
+
'application/json': components['schemas']['SummarizeReleaseResponse'];
|
|
9593
|
+
};
|
|
9594
|
+
};
|
|
9595
|
+
/** @description Invalid body, a target is not a release, the pair is out of order, or no LLM provider is configured */
|
|
9596
|
+
400: {
|
|
9597
|
+
headers: {
|
|
9598
|
+
[name: string]: unknown;
|
|
9599
|
+
};
|
|
9600
|
+
content: {
|
|
9601
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9602
|
+
};
|
|
9603
|
+
};
|
|
9604
|
+
/** @description Unauthorized */
|
|
9605
|
+
401: {
|
|
9606
|
+
headers: {
|
|
9607
|
+
[name: string]: unknown;
|
|
9608
|
+
};
|
|
9609
|
+
content: {
|
|
9610
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9611
|
+
};
|
|
9612
|
+
};
|
|
9613
|
+
/** @description Forbidden */
|
|
9614
|
+
403: {
|
|
9615
|
+
headers: {
|
|
9616
|
+
[name: string]: unknown;
|
|
9617
|
+
};
|
|
9618
|
+
content: {
|
|
9619
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9620
|
+
};
|
|
9621
|
+
};
|
|
9622
|
+
/** @description Not found */
|
|
9623
|
+
404: {
|
|
9624
|
+
headers: {
|
|
9625
|
+
[name: string]: unknown;
|
|
9626
|
+
};
|
|
9627
|
+
content: {
|
|
9628
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9629
|
+
};
|
|
9630
|
+
};
|
|
9631
|
+
/** @description Rate limited */
|
|
9632
|
+
429: {
|
|
9633
|
+
headers: {
|
|
9634
|
+
[name: string]: unknown;
|
|
9635
|
+
};
|
|
9636
|
+
content: {
|
|
9637
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9638
|
+
};
|
|
9639
|
+
};
|
|
9640
|
+
/** @description The model call failed or returned no usable text */
|
|
9641
|
+
502: {
|
|
9642
|
+
headers: {
|
|
9643
|
+
[name: string]: unknown;
|
|
9644
|
+
};
|
|
9645
|
+
content: {
|
|
9646
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9647
|
+
};
|
|
9648
|
+
};
|
|
9649
|
+
};
|
|
9650
|
+
};
|
|
9651
|
+
delete?: never;
|
|
9652
|
+
options?: never;
|
|
9653
|
+
head?: never;
|
|
9654
|
+
patch?: never;
|
|
9655
|
+
trace?: never;
|
|
9656
|
+
};
|
|
9657
|
+
'/api/projects/{projectId}/deployments/{deploymentId}/versions/current/content': {
|
|
9658
|
+
parameters: {
|
|
9659
|
+
query?: never;
|
|
9660
|
+
header?: never;
|
|
9661
|
+
path?: never;
|
|
9662
|
+
cookie?: never;
|
|
9663
|
+
};
|
|
9664
|
+
/**
|
|
9665
|
+
* Get current deployed content
|
|
9666
|
+
* @description Get the active deployed per-setting content for a deployment, used to diff changes since deploy. Content is masked and display-only; every field is null when there is no deployed baseline. Requires member role.
|
|
9667
|
+
*/
|
|
9668
|
+
get: {
|
|
9669
|
+
parameters: {
|
|
9670
|
+
query?: never;
|
|
9671
|
+
header?: never;
|
|
9672
|
+
path: {
|
|
9673
|
+
projectId: string;
|
|
9674
|
+
deploymentId: string;
|
|
9675
|
+
};
|
|
9676
|
+
cookie?: never;
|
|
9677
|
+
};
|
|
9678
|
+
requestBody?: never;
|
|
9679
|
+
responses: {
|
|
9680
|
+
/** @description Deployed content (or a null baseline) */
|
|
9681
|
+
200: {
|
|
9682
|
+
headers: {
|
|
9683
|
+
[name: string]: unknown;
|
|
9684
|
+
};
|
|
9685
|
+
content: {
|
|
9686
|
+
'application/json': components['schemas']['DeployedContentResponse'];
|
|
9687
|
+
};
|
|
9688
|
+
};
|
|
9689
|
+
/** @description Unauthorized */
|
|
9690
|
+
401: {
|
|
9691
|
+
headers: {
|
|
9692
|
+
[name: string]: unknown;
|
|
9693
|
+
};
|
|
9694
|
+
content: {
|
|
9695
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9696
|
+
};
|
|
9697
|
+
};
|
|
9698
|
+
/** @description Forbidden */
|
|
9699
|
+
403: {
|
|
9456
9700
|
headers: {
|
|
9457
9701
|
[name: string]: unknown;
|
|
9458
9702
|
};
|
|
@@ -10259,76 +10503,7 @@ interface paths {
|
|
|
10259
10503
|
};
|
|
10260
10504
|
};
|
|
10261
10505
|
/** @description Unauthorized */
|
|
10262
|
-
401: {
|
|
10263
|
-
headers: {
|
|
10264
|
-
[name: string]: unknown;
|
|
10265
|
-
};
|
|
10266
|
-
content: {
|
|
10267
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
10268
|
-
};
|
|
10269
|
-
};
|
|
10270
|
-
/** @description Forbidden */
|
|
10271
|
-
403: {
|
|
10272
|
-
headers: {
|
|
10273
|
-
[name: string]: unknown;
|
|
10274
|
-
};
|
|
10275
|
-
content: {
|
|
10276
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
10277
|
-
};
|
|
10278
|
-
};
|
|
10279
|
-
};
|
|
10280
|
-
};
|
|
10281
|
-
put?: never;
|
|
10282
|
-
post?: never;
|
|
10283
|
-
delete?: never;
|
|
10284
|
-
options?: never;
|
|
10285
|
-
head?: never;
|
|
10286
|
-
patch?: never;
|
|
10287
|
-
trace?: never;
|
|
10288
|
-
};
|
|
10289
|
-
'/api/projects/{projectId}/chat/sessions/{sessionId}': {
|
|
10290
|
-
parameters: {
|
|
10291
|
-
query?: never;
|
|
10292
|
-
header?: never;
|
|
10293
|
-
path?: never;
|
|
10294
|
-
cookie?: never;
|
|
10295
|
-
};
|
|
10296
|
-
/**
|
|
10297
|
-
* Get chat session
|
|
10298
|
-
* @description Return a chat session and its full message history when the caller owns it. Foreign or unknown sessions return 404 (never 403) so existence is not leaked. Requires member role and the chat feature.
|
|
10299
|
-
*/
|
|
10300
|
-
get: {
|
|
10301
|
-
parameters: {
|
|
10302
|
-
query?: never;
|
|
10303
|
-
header?: never;
|
|
10304
|
-
path: {
|
|
10305
|
-
projectId: string;
|
|
10306
|
-
sessionId: string;
|
|
10307
|
-
};
|
|
10308
|
-
cookie?: never;
|
|
10309
|
-
};
|
|
10310
|
-
requestBody?: never;
|
|
10311
|
-
responses: {
|
|
10312
|
-
/** @description Chat session with messages */
|
|
10313
|
-
200: {
|
|
10314
|
-
headers: {
|
|
10315
|
-
[name: string]: unknown;
|
|
10316
|
-
};
|
|
10317
|
-
content: {
|
|
10318
|
-
'application/json': components['schemas']['ChatSessionDetailResponse'];
|
|
10319
|
-
};
|
|
10320
|
-
};
|
|
10321
|
-
/** @description Unauthorized */
|
|
10322
|
-
401: {
|
|
10323
|
-
headers: {
|
|
10324
|
-
[name: string]: unknown;
|
|
10325
|
-
};
|
|
10326
|
-
content: {
|
|
10327
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
10328
|
-
};
|
|
10329
|
-
};
|
|
10330
|
-
/** @description Forbidden */
|
|
10331
|
-
403: {
|
|
10506
|
+
401: {
|
|
10332
10507
|
headers: {
|
|
10333
10508
|
[name: string]: unknown;
|
|
10334
10509
|
};
|
|
@@ -10336,8 +10511,8 @@ interface paths {
|
|
|
10336
10511
|
'application/json': components['schemas']['ErrorResponse'];
|
|
10337
10512
|
};
|
|
10338
10513
|
};
|
|
10339
|
-
/** @description
|
|
10340
|
-
|
|
10514
|
+
/** @description Forbidden */
|
|
10515
|
+
403: {
|
|
10341
10516
|
headers: {
|
|
10342
10517
|
[name: string]: unknown;
|
|
10343
10518
|
};
|
|
@@ -10355,50 +10530,36 @@ interface paths {
|
|
|
10355
10530
|
patch?: never;
|
|
10356
10531
|
trace?: never;
|
|
10357
10532
|
};
|
|
10358
|
-
'/api/projects/{projectId}/chat/
|
|
10533
|
+
'/api/projects/{projectId}/chat/sessions/{sessionId}': {
|
|
10359
10534
|
parameters: {
|
|
10360
10535
|
query?: never;
|
|
10361
10536
|
header?: never;
|
|
10362
10537
|
path?: never;
|
|
10363
10538
|
cookie?: never;
|
|
10364
10539
|
};
|
|
10365
|
-
get?: never;
|
|
10366
|
-
put?: never;
|
|
10367
10540
|
/**
|
|
10368
|
-
*
|
|
10369
|
-
* @description
|
|
10541
|
+
* Get chat session
|
|
10542
|
+
* @description Return a chat session and its full message history when the caller owns it. Foreign or unknown sessions return 404 (never 403) so existence is not leaked. Requires member role and the chat feature.
|
|
10370
10543
|
*/
|
|
10371
|
-
|
|
10544
|
+
get: {
|
|
10372
10545
|
parameters: {
|
|
10373
10546
|
query?: never;
|
|
10374
10547
|
header?: never;
|
|
10375
10548
|
path: {
|
|
10376
10549
|
projectId: string;
|
|
10550
|
+
sessionId: string;
|
|
10377
10551
|
};
|
|
10378
10552
|
cookie?: never;
|
|
10379
10553
|
};
|
|
10380
|
-
requestBody?:
|
|
10381
|
-
content: {
|
|
10382
|
-
'application/json': components['schemas']['ElicitRequest'];
|
|
10383
|
-
};
|
|
10384
|
-
};
|
|
10554
|
+
requestBody?: never;
|
|
10385
10555
|
responses: {
|
|
10386
|
-
/** @description
|
|
10556
|
+
/** @description Chat session with messages */
|
|
10387
10557
|
200: {
|
|
10388
10558
|
headers: {
|
|
10389
10559
|
[name: string]: unknown;
|
|
10390
10560
|
};
|
|
10391
10561
|
content: {
|
|
10392
|
-
'application/json': components['schemas']['
|
|
10393
|
-
};
|
|
10394
|
-
};
|
|
10395
|
-
/** @description Validation error */
|
|
10396
|
-
400: {
|
|
10397
|
-
headers: {
|
|
10398
|
-
[name: string]: unknown;
|
|
10399
|
-
};
|
|
10400
|
-
content: {
|
|
10401
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
10562
|
+
'application/json': components['schemas']['ChatSessionDetailResponse'];
|
|
10402
10563
|
};
|
|
10403
10564
|
};
|
|
10404
10565
|
/** @description Unauthorized */
|
|
@@ -10430,77 +10591,49 @@ interface paths {
|
|
|
10430
10591
|
};
|
|
10431
10592
|
};
|
|
10432
10593
|
};
|
|
10594
|
+
put?: never;
|
|
10595
|
+
post?: never;
|
|
10433
10596
|
delete?: never;
|
|
10434
10597
|
options?: never;
|
|
10435
10598
|
head?: never;
|
|
10436
10599
|
patch?: never;
|
|
10437
10600
|
trace?: never;
|
|
10438
10601
|
};
|
|
10439
|
-
'/api/
|
|
10602
|
+
'/api/projects/{projectId}/chat/elicit': {
|
|
10440
10603
|
parameters: {
|
|
10441
10604
|
query?: never;
|
|
10442
10605
|
header?: never;
|
|
10443
10606
|
path?: never;
|
|
10444
10607
|
cookie?: never;
|
|
10445
10608
|
};
|
|
10446
|
-
|
|
10447
|
-
* List MCP tokens
|
|
10448
|
-
* @description List the authenticated user's personal MCP tokens. No secret material is returned.
|
|
10449
|
-
*/
|
|
10450
|
-
get: {
|
|
10451
|
-
parameters: {
|
|
10452
|
-
query?: never;
|
|
10453
|
-
header?: never;
|
|
10454
|
-
path?: never;
|
|
10455
|
-
cookie?: never;
|
|
10456
|
-
};
|
|
10457
|
-
requestBody?: never;
|
|
10458
|
-
responses: {
|
|
10459
|
-
/** @description MCP token list */
|
|
10460
|
-
200: {
|
|
10461
|
-
headers: {
|
|
10462
|
-
[name: string]: unknown;
|
|
10463
|
-
};
|
|
10464
|
-
content: {
|
|
10465
|
-
'application/json': components['schemas']['ListMcpTokensResponse'];
|
|
10466
|
-
};
|
|
10467
|
-
};
|
|
10468
|
-
/** @description Unauthorized */
|
|
10469
|
-
401: {
|
|
10470
|
-
headers: {
|
|
10471
|
-
[name: string]: unknown;
|
|
10472
|
-
};
|
|
10473
|
-
content: {
|
|
10474
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
10475
|
-
};
|
|
10476
|
-
};
|
|
10477
|
-
};
|
|
10478
|
-
};
|
|
10609
|
+
get?: never;
|
|
10479
10610
|
put?: never;
|
|
10480
10611
|
/**
|
|
10481
|
-
*
|
|
10482
|
-
* @description
|
|
10612
|
+
* Answer elicitation prompt
|
|
10613
|
+
* @description Answer a pending MCP elicitation prompt (accept, decline, or cancel), unblocking the waiting tool invocation. Requires member role and the chat feature.
|
|
10483
10614
|
*/
|
|
10484
10615
|
post: {
|
|
10485
10616
|
parameters: {
|
|
10486
10617
|
query?: never;
|
|
10487
10618
|
header?: never;
|
|
10488
|
-
path
|
|
10619
|
+
path: {
|
|
10620
|
+
projectId: string;
|
|
10621
|
+
};
|
|
10489
10622
|
cookie?: never;
|
|
10490
10623
|
};
|
|
10491
10624
|
requestBody?: {
|
|
10492
10625
|
content: {
|
|
10493
|
-
'application/json': components['schemas']['
|
|
10626
|
+
'application/json': components['schemas']['ElicitRequest'];
|
|
10494
10627
|
};
|
|
10495
10628
|
};
|
|
10496
10629
|
responses: {
|
|
10497
|
-
/** @description
|
|
10498
|
-
|
|
10630
|
+
/** @description Elicitation resolved */
|
|
10631
|
+
200: {
|
|
10499
10632
|
headers: {
|
|
10500
10633
|
[name: string]: unknown;
|
|
10501
10634
|
};
|
|
10502
10635
|
content: {
|
|
10503
|
-
'application/json': components['schemas']['
|
|
10636
|
+
'application/json': components['schemas']['ElicitResponse'];
|
|
10504
10637
|
};
|
|
10505
10638
|
};
|
|
10506
10639
|
/** @description Validation error */
|
|
@@ -10521,48 +10654,17 @@ interface paths {
|
|
|
10521
10654
|
'application/json': components['schemas']['ErrorResponse'];
|
|
10522
10655
|
};
|
|
10523
10656
|
};
|
|
10524
|
-
|
|
10525
|
-
|
|
10526
|
-
delete?: never;
|
|
10527
|
-
options?: never;
|
|
10528
|
-
head?: never;
|
|
10529
|
-
patch?: never;
|
|
10530
|
-
trace?: never;
|
|
10531
|
-
};
|
|
10532
|
-
'/api/mcp/tokens/{tokenId}': {
|
|
10533
|
-
parameters: {
|
|
10534
|
-
query?: never;
|
|
10535
|
-
header?: never;
|
|
10536
|
-
path?: never;
|
|
10537
|
-
cookie?: never;
|
|
10538
|
-
};
|
|
10539
|
-
get?: never;
|
|
10540
|
-
put?: never;
|
|
10541
|
-
post?: never;
|
|
10542
|
-
/**
|
|
10543
|
-
* Revoke MCP token
|
|
10544
|
-
* @description Revoke a personal MCP token by id.
|
|
10545
|
-
*/
|
|
10546
|
-
delete: {
|
|
10547
|
-
parameters: {
|
|
10548
|
-
query?: never;
|
|
10549
|
-
header?: never;
|
|
10550
|
-
path: {
|
|
10551
|
-
tokenId: string;
|
|
10552
|
-
};
|
|
10553
|
-
cookie?: never;
|
|
10554
|
-
};
|
|
10555
|
-
requestBody?: never;
|
|
10556
|
-
responses: {
|
|
10557
|
-
/** @description MCP token revoked */
|
|
10558
|
-
204: {
|
|
10657
|
+
/** @description Forbidden */
|
|
10658
|
+
403: {
|
|
10559
10659
|
headers: {
|
|
10560
10660
|
[name: string]: unknown;
|
|
10561
10661
|
};
|
|
10562
|
-
content
|
|
10662
|
+
content: {
|
|
10663
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10664
|
+
};
|
|
10563
10665
|
};
|
|
10564
|
-
/** @description
|
|
10565
|
-
|
|
10666
|
+
/** @description Not found */
|
|
10667
|
+
404: {
|
|
10566
10668
|
headers: {
|
|
10567
10669
|
[name: string]: unknown;
|
|
10568
10670
|
};
|
|
@@ -10572,6 +10674,7 @@ interface paths {
|
|
|
10572
10674
|
};
|
|
10573
10675
|
};
|
|
10574
10676
|
};
|
|
10677
|
+
delete?: never;
|
|
10575
10678
|
options?: never;
|
|
10576
10679
|
head?: never;
|
|
10577
10680
|
patch?: never;
|
|
@@ -11834,14 +11937,19 @@ interface components {
|
|
|
11834
11937
|
role: string;
|
|
11835
11938
|
joinedAt: string;
|
|
11836
11939
|
}[];
|
|
11837
|
-
|
|
11940
|
+
tokens: {
|
|
11838
11941
|
id: string;
|
|
11839
11942
|
name: string;
|
|
11943
|
+
/** @example automation */
|
|
11944
|
+
kind: string;
|
|
11945
|
+
/** @example read write */
|
|
11946
|
+
scope: string;
|
|
11947
|
+
/** @example api mcp */
|
|
11948
|
+
audience: string;
|
|
11840
11949
|
projectId: string | null;
|
|
11841
|
-
origin: string;
|
|
11842
11950
|
createdAt: string;
|
|
11843
11951
|
lastUsedAt: string | null;
|
|
11844
|
-
expiresAt: string
|
|
11952
|
+
expiresAt: string;
|
|
11845
11953
|
revokedAt: string | null;
|
|
11846
11954
|
}[];
|
|
11847
11955
|
sessions: {
|
|
@@ -11850,14 +11958,6 @@ interface components {
|
|
|
11850
11958
|
expiresAt: string;
|
|
11851
11959
|
lastTouchedAt: string;
|
|
11852
11960
|
}[];
|
|
11853
|
-
mcpTokens: {
|
|
11854
|
-
id: string;
|
|
11855
|
-
name: string;
|
|
11856
|
-
createdAt: string;
|
|
11857
|
-
lastUsedAt: string | null;
|
|
11858
|
-
expiresAt: string;
|
|
11859
|
-
revokedAt: string | null;
|
|
11860
|
-
}[];
|
|
11861
11961
|
mcpSessions: {
|
|
11862
11962
|
id: string;
|
|
11863
11963
|
projectId: string | null;
|
|
@@ -11891,19 +11991,27 @@ interface components {
|
|
|
11891
11991
|
cancelledAt: string | null;
|
|
11892
11992
|
}[];
|
|
11893
11993
|
};
|
|
11894
|
-
|
|
11994
|
+
AutomationTokenSummary: {
|
|
11895
11995
|
/** @example tok_a1b2c3d4 */
|
|
11896
11996
|
id: string;
|
|
11897
11997
|
/** @example CI Pipeline */
|
|
11898
11998
|
name: string;
|
|
11899
|
-
/** @example
|
|
11900
|
-
|
|
11901
|
-
/**
|
|
11902
|
-
|
|
11903
|
-
|
|
11904
|
-
|
|
11905
|
-
|
|
11906
|
-
|
|
11999
|
+
/** @example wos_pat_a1b2 */
|
|
12000
|
+
tokenPrefix: string;
|
|
12001
|
+
/**
|
|
12002
|
+
* @example [
|
|
12003
|
+
* "read",
|
|
12004
|
+
* "write"
|
|
12005
|
+
* ]
|
|
12006
|
+
*/
|
|
12007
|
+
scope: string[];
|
|
12008
|
+
/**
|
|
12009
|
+
* @example [
|
|
12010
|
+
* "api",
|
|
12011
|
+
* "mcp"
|
|
12012
|
+
* ]
|
|
12013
|
+
*/
|
|
12014
|
+
audience: string[];
|
|
11907
12015
|
/**
|
|
11908
12016
|
* Format: date-time
|
|
11909
12017
|
* @example 2026-01-26T14:30:00.000Z
|
|
@@ -11918,7 +12026,7 @@ interface components {
|
|
|
11918
12026
|
* Format: date-time
|
|
11919
12027
|
* @example 2026-01-26T14:30:00.000Z
|
|
11920
12028
|
*/
|
|
11921
|
-
expiresAt: string
|
|
12029
|
+
expiresAt: string;
|
|
11922
12030
|
/**
|
|
11923
12031
|
* Format: date-time
|
|
11924
12032
|
* @example 2026-01-26T14:30:00.000Z
|
|
@@ -12944,6 +13052,89 @@ interface components {
|
|
|
12944
13052
|
};
|
|
12945
13053
|
head: components['schemas']['Frame'];
|
|
12946
13054
|
};
|
|
13055
|
+
CanvasDocument: {
|
|
13056
|
+
/** @enum {number} */
|
|
13057
|
+
v: 1;
|
|
13058
|
+
nodes: components['schemas']['CanvasNodeEntry'][];
|
|
13059
|
+
edges: components['schemas']['CanvasEdgeEntry'][];
|
|
13060
|
+
hidden: string[];
|
|
13061
|
+
};
|
|
13062
|
+
CanvasNodeEntry: {
|
|
13063
|
+
kind: string;
|
|
13064
|
+
ref: string;
|
|
13065
|
+
position: components['schemas']['CanvasPoint'];
|
|
13066
|
+
parent?: string;
|
|
13067
|
+
size?: {
|
|
13068
|
+
width: number;
|
|
13069
|
+
height: number;
|
|
13070
|
+
};
|
|
13071
|
+
label?: string;
|
|
13072
|
+
};
|
|
13073
|
+
CanvasPoint: {
|
|
13074
|
+
x: number;
|
|
13075
|
+
y: number;
|
|
13076
|
+
};
|
|
13077
|
+
CanvasEdgeEntry: {
|
|
13078
|
+
id: string;
|
|
13079
|
+
/** @enum {string} */
|
|
13080
|
+
kind: 'navigation';
|
|
13081
|
+
from: string;
|
|
13082
|
+
to: string;
|
|
13083
|
+
label?: string;
|
|
13084
|
+
};
|
|
13085
|
+
Canvas: {
|
|
13086
|
+
/** @example cnv_V1StGXR8Z5jdHi6BmyT7K */
|
|
13087
|
+
id: string;
|
|
13088
|
+
projectId: string;
|
|
13089
|
+
name: string;
|
|
13090
|
+
document: components['schemas']['CanvasDocument'];
|
|
13091
|
+
version: number;
|
|
13092
|
+
/**
|
|
13093
|
+
* Format: date-time
|
|
13094
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
13095
|
+
*/
|
|
13096
|
+
createdAt: string;
|
|
13097
|
+
/**
|
|
13098
|
+
* Format: date-time
|
|
13099
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
13100
|
+
*/
|
|
13101
|
+
updatedAt: string;
|
|
13102
|
+
createdBy: string;
|
|
13103
|
+
updatedBy: string;
|
|
13104
|
+
};
|
|
13105
|
+
CanvasLean: {
|
|
13106
|
+
/** @example cnv_V1StGXR8Z5jdHi6BmyT7K */
|
|
13107
|
+
id: string;
|
|
13108
|
+
projectId: string;
|
|
13109
|
+
name: string;
|
|
13110
|
+
version: number;
|
|
13111
|
+
/**
|
|
13112
|
+
* Format: date-time
|
|
13113
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
13114
|
+
*/
|
|
13115
|
+
createdAt: string;
|
|
13116
|
+
/**
|
|
13117
|
+
* Format: date-time
|
|
13118
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
13119
|
+
*/
|
|
13120
|
+
updatedAt: string;
|
|
13121
|
+
createdBy: string;
|
|
13122
|
+
updatedBy: string;
|
|
13123
|
+
};
|
|
13124
|
+
CanvasListResponse: {
|
|
13125
|
+
canvases: components['schemas']['CanvasLean'][];
|
|
13126
|
+
};
|
|
13127
|
+
PutCanvasResponse: {
|
|
13128
|
+
version: number;
|
|
13129
|
+
};
|
|
13130
|
+
CanvasConflictResponse: {
|
|
13131
|
+
error: {
|
|
13132
|
+
/** @enum {string} */
|
|
13133
|
+
code: 'CANVAS_VERSION_CONFLICT';
|
|
13134
|
+
message: string;
|
|
13135
|
+
};
|
|
13136
|
+
head: components['schemas']['Canvas'];
|
|
13137
|
+
};
|
|
12947
13138
|
SummarizeReleaseResponse: {
|
|
12948
13139
|
/** @enum {string} */
|
|
12949
13140
|
mode: 'draft' | 'check';
|
|
@@ -13773,33 +13964,6 @@ interface components {
|
|
|
13773
13964
|
/** @enum {boolean} */
|
|
13774
13965
|
ok: true;
|
|
13775
13966
|
};
|
|
13776
|
-
CreateMcpTokenRequest: {
|
|
13777
|
-
name: string;
|
|
13778
|
-
ttlSeconds?: number;
|
|
13779
|
-
};
|
|
13780
|
-
CreateMcpTokenResponse: {
|
|
13781
|
-
id: string;
|
|
13782
|
-
name: string;
|
|
13783
|
-
token: string;
|
|
13784
|
-
/** Format: date-time */
|
|
13785
|
-
createdAt: string;
|
|
13786
|
-
/** Format: date-time */
|
|
13787
|
-
expiresAt: string;
|
|
13788
|
-
};
|
|
13789
|
-
ListMcpTokensResponse: {
|
|
13790
|
-
tokens: components['schemas']['McpTokenSummary'][];
|
|
13791
|
-
};
|
|
13792
|
-
McpTokenSummary: {
|
|
13793
|
-
id: string;
|
|
13794
|
-
name: string;
|
|
13795
|
-
audience: string;
|
|
13796
|
-
/** Format: date-time */
|
|
13797
|
-
createdAt: string;
|
|
13798
|
-
/** Format: date-time */
|
|
13799
|
-
lastUsedAt: string | null;
|
|
13800
|
-
/** Format: date-time */
|
|
13801
|
-
expiresAt: string;
|
|
13802
|
-
};
|
|
13803
13967
|
PackageCatalogResponse: {
|
|
13804
13968
|
catalog: components['schemas']['PackageCatalogEntry'][];
|
|
13805
13969
|
count: number;
|
|
@@ -13904,27 +14068,6 @@ interface components {
|
|
|
13904
14068
|
isCurrent: boolean;
|
|
13905
14069
|
}[];
|
|
13906
14070
|
};
|
|
13907
|
-
DeviceCodeResponse: {
|
|
13908
|
-
deviceCode: string;
|
|
13909
|
-
userCode: string;
|
|
13910
|
-
expiresIn: number;
|
|
13911
|
-
interval: number;
|
|
13912
|
-
};
|
|
13913
|
-
ApproveDeviceResponse: {
|
|
13914
|
-
success: boolean;
|
|
13915
|
-
};
|
|
13916
|
-
ApproveDeviceRequest: {
|
|
13917
|
-
userCode: string;
|
|
13918
|
-
};
|
|
13919
|
-
DeviceTokenResponse: {
|
|
13920
|
-
token: string;
|
|
13921
|
-
email: string;
|
|
13922
|
-
userId: string;
|
|
13923
|
-
};
|
|
13924
|
-
DeviceTokenRequest: {
|
|
13925
|
-
deviceCode: string;
|
|
13926
|
-
hostname?: string;
|
|
13927
|
-
};
|
|
13928
14071
|
ListProjectsResponse: {
|
|
13929
14072
|
projects: components['schemas']['Project'][];
|
|
13930
14073
|
total: number;
|
|
@@ -14077,18 +14220,32 @@ interface components {
|
|
|
14077
14220
|
/** @enum {string} */
|
|
14078
14221
|
createdBy: 'user' | 'auto_save' | 'restore' | 'deploy' | 'preview';
|
|
14079
14222
|
};
|
|
14080
|
-
|
|
14081
|
-
tokens: components['schemas']['
|
|
14223
|
+
ListAutomationTokensResponse: {
|
|
14224
|
+
tokens: components['schemas']['AutomationTokenSummary'][];
|
|
14082
14225
|
};
|
|
14083
|
-
|
|
14226
|
+
CreateAutomationTokenResponse: {
|
|
14084
14227
|
/** @example tok_a1b2c3d4 */
|
|
14085
14228
|
id: string;
|
|
14086
14229
|
/** @example CI Pipeline */
|
|
14087
14230
|
name: string;
|
|
14088
|
-
/** @example
|
|
14231
|
+
/** @example wos_pat_a1b2c3d4... */
|
|
14089
14232
|
token: string;
|
|
14090
|
-
/** @example
|
|
14091
|
-
|
|
14233
|
+
/** @example wos_pat_a1b2 */
|
|
14234
|
+
tokenPrefix: string;
|
|
14235
|
+
/**
|
|
14236
|
+
* @example [
|
|
14237
|
+
* "read",
|
|
14238
|
+
* "write"
|
|
14239
|
+
* ]
|
|
14240
|
+
*/
|
|
14241
|
+
scope: string[];
|
|
14242
|
+
/**
|
|
14243
|
+
* @example [
|
|
14244
|
+
* "api",
|
|
14245
|
+
* "mcp"
|
|
14246
|
+
* ]
|
|
14247
|
+
*/
|
|
14248
|
+
audience: string[];
|
|
14092
14249
|
/**
|
|
14093
14250
|
* Format: date-time
|
|
14094
14251
|
* @example 2026-01-26T14:30:00.000Z
|
|
@@ -14098,15 +14255,18 @@ interface components {
|
|
|
14098
14255
|
* Format: date-time
|
|
14099
14256
|
* @example 2026-01-26T14:30:00.000Z
|
|
14100
14257
|
*/
|
|
14101
|
-
expiresAt: string
|
|
14102
|
-
/** @example null */
|
|
14103
|
-
projectId: string | null;
|
|
14258
|
+
expiresAt: string;
|
|
14104
14259
|
};
|
|
14105
|
-
|
|
14260
|
+
CreateAutomationTokenRequest: {
|
|
14106
14261
|
/** @example CI Pipeline */
|
|
14107
14262
|
name: string;
|
|
14263
|
+
/**
|
|
14264
|
+
* @example read write
|
|
14265
|
+
* @enum {string}
|
|
14266
|
+
*/
|
|
14267
|
+
scope: 'read' | 'read write';
|
|
14108
14268
|
/** @example 90 */
|
|
14109
|
-
expiresInDays
|
|
14269
|
+
expiresInDays: 30 | 90 | 180 | 365;
|
|
14110
14270
|
};
|
|
14111
14271
|
BundleResponse: {
|
|
14112
14272
|
bundleId: string;
|
|
@@ -15006,8 +15166,16 @@ interface HealthResult {
|
|
|
15006
15166
|
* rejects without a credential) and defensively parses the JSON body. Resolves `{ reachable: false }`
|
|
15007
15167
|
* only on a real network/timeout failure; a non-2xx status still counts as
|
|
15008
15168
|
* reachable.
|
|
15169
|
+
*
|
|
15170
|
+
* `baseUrl` names the app to probe, without a trailing slash. Omitted, it
|
|
15171
|
+
* falls back to `resolveAppUrl()`, the local machine's chain
|
|
15172
|
+
* (`WALKEROS_APP_URL`, then the CLI config file, then the built-in default),
|
|
15173
|
+
* which is what every `walkeros` binary invocation wants. A caller that is
|
|
15174
|
+
* NOT the local CLI has to pass its own: an in-process host has no CLI config
|
|
15175
|
+
* to read, so the fallback would silently probe a different backend than the
|
|
15176
|
+
* one that caller talks to.
|
|
15009
15177
|
*/
|
|
15010
|
-
declare function fetchHealth(): Promise<HealthResult>;
|
|
15178
|
+
declare function fetchHealth(baseUrl?: string): Promise<HealthResult>;
|
|
15011
15179
|
type ContractVerdict = 'in-sync' | 'client-older' | 'client-newer' | 'unknown';
|
|
15012
15180
|
interface ContractComparison {
|
|
15013
15181
|
verdict: ContractVerdict;
|
|
@@ -15018,9 +15186,15 @@ interface ContractComparison {
|
|
|
15018
15186
|
interface CompareContractInput {
|
|
15019
15187
|
bakedVersion?: string;
|
|
15020
15188
|
bakedHash?: string;
|
|
15189
|
+
/**
|
|
15190
|
+
* The app to probe, without a trailing slash. Omitted, the probe resolves
|
|
15191
|
+
* the local machine's app URL; see {@link fetchHealth}.
|
|
15192
|
+
*/
|
|
15193
|
+
baseUrl?: string;
|
|
15021
15194
|
}
|
|
15022
15195
|
/**
|
|
15023
15196
|
* Compare the client's baked contract against the live app's `/api/health`.
|
|
15197
|
+
* The app is `input.baseUrl` when given, otherwise the locally resolved one.
|
|
15024
15198
|
*
|
|
15025
15199
|
* - unreachable / missing `contractVersion`+`contractHash` → `unknown`
|
|
15026
15200
|
* - baked hash == live hash → `in-sync`
|
|
@@ -15260,7 +15434,13 @@ interface SetReleaseRationaleOptions {
|
|
|
15260
15434
|
projectId?: string;
|
|
15261
15435
|
flowId: string;
|
|
15262
15436
|
versionId: string;
|
|
15263
|
-
|
|
15437
|
+
/**
|
|
15438
|
+
* The rationale to store. `null` CLEARS the one already there: `humanText`
|
|
15439
|
+
* is the only field a client may write, and null is how the route says
|
|
15440
|
+
* "remove it". Without it there would be no way back from a rationale
|
|
15441
|
+
* written by mistake.
|
|
15442
|
+
*/
|
|
15443
|
+
text: string | null;
|
|
15264
15444
|
}
|
|
15265
15445
|
declare function setReleaseRationale(options: SetReleaseRationaleOptions): Promise<VersionAnnotation>;
|
|
15266
15446
|
type ThreadAnchorType = 'step' | 'entity_action' | 'release' | 'contract' | 'tag';
|
|
@@ -15353,7 +15533,7 @@ interface WalkerOSConfig {
|
|
|
15353
15533
|
/**
|
|
15354
15534
|
* Static bearer written by the pre-OAuth CLI. Honored until it expires, and
|
|
15355
15535
|
* the first use in a process prints a one-line notice naming
|
|
15356
|
-
* `walkeros login`, which replaces it with a refreshable session.
|
|
15536
|
+
* `walkeros auth login`, which replaces it with a refreshable session.
|
|
15357
15537
|
*/
|
|
15358
15538
|
token?: string;
|
|
15359
15539
|
/** Short-lived bearer from the device authorization grant. */
|
|
@@ -15399,7 +15579,7 @@ declare function writeConfig(config: WalkerOSConfig): void;
|
|
|
15399
15579
|
* Remove every credential field, keeping the rest of the config.
|
|
15400
15580
|
*
|
|
15401
15581
|
* Used when the stored session is known to be dead, so the next command can
|
|
15402
|
-
* say "run `walkeros login`" instead of failing against the API.
|
|
15582
|
+
* say "run `walkeros auth login`" instead of failing against the API.
|
|
15403
15583
|
*/
|
|
15404
15584
|
declare function clearAuthFields(): void;
|
|
15405
15585
|
/**
|